问题描述
我使用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 body
和 InputStream
,我们认为 {{1}并将其写入文件
InputStream
,
在 Java 中,String
与 byte[]
数组不同。
因此处理音频内容(这是二进制数据)
作为字符串(即文本数据)正在乞求问题。
相反,您应该将响应正文设为 byte[]
。
然后您可以将字节保存到文件中。
例如像这样:
ResponseEntity<byte[]> entity = restTemplate.getForEntity(url,byte[].class);
byte[] body = entity.getBody();
Path path = Paths.get("example.wav");
Files.write(path,body);