0


SpringBoot 使用 RestTemplate 发送 binary 数据流

情况说明:
接口A接受到一个数据流,在postman里的传输方式显示如下:
在这里插入图片描述
接口A接受到这个数据流之后,需要转发到接口B进行处理。
这里要注意一点是:
postman图中的这种方式和MultipartFile流的传输方式不同,MultipartFile流方式,是在body的form表单中进行传输,需要指定一个key,这样,服务接口根据这个key进行接收流。如下图:
在这里插入图片描述

回归正题
后端接口接收binary数据并使用RestTemplate发送出去的相关代码如下:

//读取body 中 binary流数据@RequestMapping("/unAvroForward")publicJSONObjectunAvroForward(HttpServletRequest request,@RequestHeaderString topic)throwsException{ServletInputStream inputStream = request.getInputStream();String url ="http://127.0.0.1:8080/unAvro";//转发binary数据JSONObject result =sendRequest(url,inputStream,topic,HttpMethod.POST);return result;}@AutowiredprivateRestTemplate restTemplate;privateJSONObjectsendRequest(String url,ServletInputStream inputStream,String topic,HttpMethod type)throwsException,FileNotFoundException{//设置请求头HttpHeaders httpHeaders =newHttpHeaders();//传递请求体时必须设置传递参数的格式,为Content-Type : application/json
        httpHeaders.add("Content-Type","application/octet-stream");
        httpHeaders.add("topic", topic);HttpEntity<byte[]> entity =newHttpEntity<>(IOUtils.toByteArray(inputStream), httpHeaders);ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(url, type, entity,JSONObject.class);JSONObject result = responseEntity.getBody();return result;}

本文转载自: https://blog.csdn.net/Brave_heart4pzj/article/details/126588419
版权归原作者 生产队队长 所有, 如有侵权,请联系我们删除。

“SpringBoot 使用 RestTemplate 发送 binary 数据流”的评论:

还没有评论