Мне нужно вызвать API Rest POST, который возвращает File и json в ответе данных формы Multipart. Я хочу добиться того же, используя Spring RestTemplate. Я ищу любые примеры в этом отношении. Вот что я пробовал до сих пор:
try {
FormHttpMessageConverter formConverter = new FormHttpMessageConverter() {
@Override
public boolean canRead(Class<?> clazz, MediaType mediaType) {
if (clazz == LinkedMultiValueMap.class) {
return true;
}
return super.canRead(clazz, mediaType);
}
};
RestTemplate restTemplate = new RestTemplate();
restTemplate.setMessageConverters(Collections.singletonList(formConverter));
String request = "<json request>";
HttpHeaders pesHeaders = new HttpHeaders();
pesHeaders.set("timestamp", Long.toString(DateTimeUtils.currentTimeMillis()));
pesHeaders.setContentType(MediaType.APPLICATION_JSON);
pesHeaders.setAccept(Collections.singletonList(MediaType.MULTIPART_FORM_DATA));
HttpEntity<String> pesRequest = new HttpEntity<String>(request, pesHeaders);
ResponseEntity<LinkedMultiValueMap> entity = restTemplate.exchange(
"<url>", HttpMethod.POST,
pesRequest, LinkedMultiValueMap.class);
entity.getBody();
} catch (HttpClientErrorException hc) {
System.out.println(hc.getResponseBodyAsString());
hc.printStackTrace();
}
Ниже приводится исключение, с которым я сталкиваюсь:
org.springframework.web.client.RestClientException: Нет HttpMessageConverter для Java.lang.String и тип содержимого "application / json" в org.springframework.web.client.RestTemplate $ HttpEntityRequestCallback.doWithRequest (RestTemplate.java:957) в org.springframework.web.client.RestTemplate.Ex733)