如何使用RestTemplate进行远程调并从响应中获取多个文件?
问题描述
最近需要完成一个功能,即我使用RestTemplate 远程调用一个图片服务,这个服务会同时返回多张图片, 我如何从响应中获取多个流呢? 使用获取响应体再获取流的方式,就只有一个inputsteam,这个该如何区分多个文件呢?
try { ResponseEntity<Resource> entity = restTemplate.postForEntity("", "", Resource.class);
entity.getBody().getFile();
InputStream inputStream = entity.getBody().getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
//这种指定返回值泛型的方式可性吗?
ResponseEntity<MultipartFile> forEntity = restTemplate.getForEntity("url", MultipartFile.class, "param");
请各位大神帮我解答一下,谢谢
回答:
不清楚多张图片的背后逻辑,
- 多张图片在图片服务端,动态生成之后,返回给调用方。
- 多张已经生成好的静态图片,已经在文件服务器上部署ready,或者已经在CDN上,图片服务只是把文件整合返回给调用方。
我能想到的情况上述两点。
针对1的对策,在图片服务端动态生成多张图片,打包压缩gz或者zip,将压缩文件作为一个文件流传给调用方,调用方自行解压缩。
针对2的对策,相对复杂一下。图片服务的response流的自己组织协议,类似如下。
Section1: 000005 // 数字,表示返回五张图片
Section2: filename1.jpg // 第一个文件名,占空间1024 bytes,不足则用空格补满
Section3: 12345678901234567890 // 第一张图片的bytes数,不足则用0补满
Section4: xyzxyzxyzxyzxyz..... // 第一张图片的二进制内容流, 这部分长度为section3的数字
Section5: filename2.jpg
Section6: 12345678901234567890
Section7: xyzxyzxyz
以此类推,可根据需要自行加Section满足逻辑
调用方需要自行解析上述协议。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
以上是 如何使用RestTemplate进行远程调并从响应中获取多个文件? 的全部内容, 来源链接: utcz.com/p/944491.html