2 回答

TA貢獻1825條經(jīng)驗 獲得超4個贊
你把事情搞得太復(fù)雜了。您應(yīng)該使用單個地圖來保存表單值,而不是地圖的地圖。在 Spring Boot 旁邊已經(jīng)提供了一個,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(或?qū)嶋H上的FormHttpMessageConverter),將其轉(zhuǎn)化為一個正確的請求。

TA貢獻1830條經(jīng)驗 獲得超9個贊
默認的 RestTemplate 構(gòu)造函數(shù)不包含任何消息轉(zhuǎn)換器,您需要添加它。例如,您可以這樣做:
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);
添加回答
舉報