如何从 RestTemplate 读取响应标头?
2022-09-01 00:56:29
我正在使用 RestTemplate.postForObject 将信息发布到 Web 服务。除了结果字符串之外,我还需要响应标头中的信息。有没有办法得到这个?
RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);
我正在使用 RestTemplate.postForObject 将信息发布到 Web 服务。除了结果字符串之外,我还需要响应标头中的信息。有没有办法得到这个?
RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);
好吧,我终于想通了。交换方法正是我需要的。它返回一个包含完整标头的 HttpEntity。
RestTemplate template = new RestTemplate();
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);
String resultString = response.getBody();
HttpHeaders headers = response.getHeaders();
最好的办法是使用执行方法并传入一个响应提取器,该响应器将有权访问标头。
private static class StringFromHeadersExtractor implements ResponseExtractor<String> {
public String extractData(ClientHttpResponse response) throws
{
return doSomthingWithHeader(response.getHeaders());
}
}
另一种选择(不太干净)是扩展 RestTemplate 并重写对它的调用,并在那里添加任何特殊的标头处理逻辑。doExecute