Resttemplate 上传文件 带头信息 报错 500 没有状态信息 无请求返回值 Spring boot

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


Resttemplate 发送请求上传文件带自定义头信息


前言

Resttemplate 发送请求上传文件带自定义头信息 使用UriComponentsBuilder类有效解决。发送请求总是报500错误,也没有请求端的返回,状态信息都是空,打断点找出是头信息token传输之间有问题。源码说的是会把特殊字符转码。那就不转码解决问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、解决

1.代码示例

代码如下(示例):


@RestController
public class FileController {
    RestTemplate restTemplate = new RestTemplate();


    @PostMapping("/fileupload")
    public String upload(MultipartFile multipartFile) {
        {
            SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
            requestFactory.setBufferRequestBody(false);
            restTemplate.setRequestFactory(requestFactory);
            MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
            try {
                params.add("files", new MultipartFileResource(multipartFile.getInputStream(), "multipartFile"));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            HttpHeaders headers = new HttpHeaders();
            //headers.add("Content-Type",multipart/form-data); 也可以
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            //获取到的token
            String token ="";
            UriComponentsBuilder uriComponentsBuilder1 = UriComponentsBuilder.fromUriString(token);
          
            //UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(url);
      		//URI build = uriComponentsBuilder.build("name=zs", "age=18");
       		// System.out.println(build);  查看url并使用
            headers.add("token",stoken);
            HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(params, headers);
            ResponseEntity<String> ret = restTemplate.exchange("http://192.168.1.19:8080/", HttpMethod.POST, request, String.class);
            System.out.println(ret.getBody().toString());
        }
        return "OK";
    }

}


总结

提示:希望帮助到需要的人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值