RestTemplate

RestTemplate 调用返回InputStreamResource方法

converter.HttpMessageNotReadableException: Unsupported resource class: class org.springframework.core.io.InputStreamResource
被调用方:`
HttpHeaders headers = new HttpHeaders();
headers.add(“Cache-Control”, “no-cache, no-store, must-revalidate”);
headers.add(“Content-Disposition”, String.format(“attachment; filename=”%s"", file.getFilename()));
headers.add(“Pragma”, “no-cache”);
headers.add(“Expires”, “0”);

            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .contentLength(file.contentLength())
                    .contentType(MediaType.parseMediaType("application/octet-stream"))
                    .body(new InputStreamResource(file.getInputStream()));`

调用方`
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); //make JSON parameters

    //make back to no matter what type on octet-stream
    List<MediaType> mediaTypeList = new ArrayList<>();
    mediaTypeList.add(MediaType.parseMediaType("application/octet-stream"));
    headers.setAccept(mediaTypeList);

    HttpEntity<String> entity = new HttpEntity<>(JSON.toJSONString(request), headers);
    //main aim to InputStreamResource transform Resource(important)
    ResponseEntity<InputStreamResource> postForEntity = restTemplate.exchange(sb.toString(), HttpMethod.POST, entity, InputStreamResource.class);`

设置返回类型:application/octet-stream
原因:RestTemplate对InputStreamResource不支持,可修改为返回类型为接口接收:Resource.class

       HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON); //make JSON parameters

        //make back to no matter what type on octet-stream
        List<MediaType> mediaTypeList = new ArrayList<>();
        mediaTypeList.add(MediaType.parseMediaType("application/octet-stream"));
        headers.setAccept(mediaTypeList);

        HttpEntity<String> entity = new HttpEntity<>(JSON.toJSONString(request), headers);
        //main aim to InputStreamResource transform Resource(important)
        ResponseEntity<Resource> postForEntity = restTemplate.exchange(sb.toString(), HttpMethod.POST, entity, Resource.class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值