2 回答
TA贡献1825条经验 获得超4个赞
你把事情搞得太复杂了。您应该使用单个地图来保存表单值,而不是地图的地图。在 Spring Boot 旁边已经提供了一个,RestTemplate所以你不需要再次配置你自己的。
File file = new File("*********");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("files", file);
form.add("files", file);
form.add("files", file);
form.add("usertoken", "test");
form.add("sendTo", "test");
form.add("subject", "test");
form.add("content", "test");
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(form, httpHeaders);
String serverUrl = "****";
restTemplate().postForEntity(serverUrl, requestEntity, String.class);
在RestTemplate(或实际上的FormHttpMessageConverter),将其转化为一个正确的请求。
TA贡献1830条经验 获得超9个赞
默认的 RestTemplate 构造函数不包含任何消息转换器,您需要添加它。例如,您可以这样做:
HttpEntity<MultiValueMap<String, Object>> requestEntity = new
HttpEntity<MultiValueMap<String, Object>>(parts, requestHeaders);
RestTemplate restTemplate = getRestTemplate();
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
return restTemplate.postForObject(apiURI, requestEntity, String.class);
添加回答
举报