Как использовать RestTemplate для получения ответа из нескольких частей формы? - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно вызвать 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...