Подтвердить что ты не робот

Как прочитать заголовок ответа из RestTemplate?

Я отправляю информацию в веб-службу, используя RestTemplate.postForObject. Помимо строки результата мне нужна информация в заголовке ответа. Есть ли способ получить это?

RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);
4b9b3361

Ответ 1

Хорошо, я, наконец, понял это. Метод обмена - именно то, что мне нужно. Он возвращает HttpEntity, который содержит полные заголовки.

RestTemplate template = new RestTemplate();
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);

String resultString = response.getBody();
HttpHeaders headers = response.getHeaders();

Ответ 2

Лучше всего использовать метод execute и передать ResponseExtractor который будет иметь доступ к заголовкам.

private static class StringFromHeadersExtractor implements ResponseExtractor<String> {

    public String extractData(ClientHttpResponse response) throws   
    {
        return doSomthingWithHeader(response.getHeaders());
    }
}

Другой вариант (менее чистый) - это расширение RestTemplate и переопределение вызова на doExecute и добавление туда любой специальной логики обработки заголовков.

Ответ 3

Я не знаю, является ли это рекомендуемым методом, но похоже, что вы можете извлекать информацию из заголовков ответов, если вы настраиваете шаблон для использования пользовательского HttpMessageConverter.

Ответ 4

  HttpEntity<?> entity = new HttpEntity<>( postObject, headers ); // for request
    HttpEntity<String> response = template.exchange(url, HttpMethod.POST, entity, String.class);
    String result= response.getBody();
    HttpHeaders headers = response.getHeaders();