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

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

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

4 ответов


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

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

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

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

private static class StringFromHeadersExtractor implements ResponseExtractor<String> {

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

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


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


  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();