提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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";
}
}
总结
提示:希望帮助到需要的人