springboot RestTemplate 调用 url 和 https 响应 headers(content-type:audio/wav) ,如何保存为 *.wav 文件?

springboot RestTemplate call url and https response headers(content-type:audio/wav) ,how to save as *.wav file?

我使用spring RestTemplate调用Third-party服务,

ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);

这样的结果:

forEntity status:200 headers: content-type=audio/wav body:"RIFFä,xxxxxxx ......"

响应是 enter image description here body好像是wav数据,我想把数据存成wav文件。

如果我直接进入chrome中的link,就可以播放和下载了。

改用RestTemplate.execute,它允许您附加一个ResponseExtractor,您可以在其中访问response body,其中一个InputStream,我们认为InputStream 并将其写入文件

   restTemplate.execute(
            url, 
            HttpMethod.GET,
            request -> {}, 
            response -> {
                //get response body as inputstream
                InputStream in = response.getBody();
                //write inputstream to a local file
                Files.copy(in, Paths.get("C:/path/to/file.wav"), StandardCopyOption.REPLACE_EXISTING);
                return null;
            }
    );

在 Java 中,Stringbyte[] 数组不同。 因此处理音频内容(这是二进制数据) 作为一个字符串(即文本数据)正在乞求问题。
相反,您应该将响应主体作为 byte[]。 然后您可以将字节保存到文件中。 例如像这样:

ResponseEntity<byte[]> entity = restTemplate.getForEntity(url, byte[].class);
byte[] body = entity.getBody();
Path path = Paths.get("example.wav");
Files.write(path, body);