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

问题描述

我使用spring RestTemplate来调用第三方服务,

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

结果如下:

为实体 状态:200 标题内容类型=音频/wav body:"RIFFä,xxxxxxxx......"

响应为 enter image description here 正文似乎是 wav 数据,我想将数据保存到 wav 文件中。

如果我直接去chrome中的链接,可以玩,然后下载。

解决方法

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

InputStream
,

在 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);