如何从RestTemplate中读取响应头?

时间:2011-05-15 00:35:11

标签: java spring resttemplate

我使用RestTemplate.postForObject将信息发布到Web服务。除了结果字符串,我还需要响应头中的信息。有没有办法得到这个?

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

4 个答案:

答案 0 :(得分:47)

好的,我终于明白了。交换方法正是我所需要的。它返回一个包含完整标题的HttpEntity。

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

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

答案 1 :(得分:8)

最好的办法是使用execute方法并传入一个ResponseExtractor来访问标题。

private static class StringFromHeadersExtractor implements ResponseExtractor<String> {

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

另一个选项(不太干净)是扩展RestTemplate并覆盖对doExecute的调用,并在那里添加任何特殊的头处理逻辑。

答案 2 :(得分:1)

我不知道这是否是推荐的方法,但如果您将模板配置为使用自定义HttpMessageConverter,则看起来您可以从响应标头中提取信息。

答案 3 :(得分:0)

leave