情况说明:
接口A接受到一个数据流,在postman里的传输方式显示如下:
接口A接受到这个数据流之后,需要转发到接口B进行处理。
这里要注意一点是:
postman图中的这种方式和MultipartFile流的传输方式不同,MultipartFile流方式,是在body的form表单中进行传输,需要指定一个key,这样,服务接口根据这个key进行接收流。如下图:
文章来源:https://www.toymoban.com/news/detail-519558.html
回归正题
后端接口接收binary数据并使用RestTemplate发送出去的相关代码如下:文章来源地址https://www.toymoban.com/news/detail-519558.html
//读取body 中 binary流数据
@RequestMapping("/unAvroForward")
public JSONObject unAvroForward(HttpServletRequest request, @RequestHeader String topic) throws Exception {
ServletInputStream inputStream = request.getInputStream();
String url = "http://127.0.0.1:8080/unAvro";
//转发binary数据
JSONObject result = sendRequest(url,inputStream,topic,HttpMethod.POST);
return result;
}
@Autowired
private RestTemplate restTemplate;
private JSONObject sendRequest(String url, ServletInputStream inputStream, String topic,HttpMethod type) throws Exception, FileNotFoundException {
//设置请求头
HttpHeaders httpHeaders = new HttpHeaders();
//传递请求体时必须设置传递参数的格式,为Content-Type : application/json
httpHeaders.add("Content-Type", "application/octet-stream");
httpHeaders.add("topic", topic);
HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(inputStream), httpHeaders);
ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(url, type, entity, JSONObject.class);
JSONObject result = responseEntity.getBody();
return result;
}
到了这里,关于SpringBoot 使用 RestTemplate 发送 binary 数据流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!