SpringBoot 使用 RestTemplate 发送 binary 数据流

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

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

    //读取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;
    }
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值