我正在更新使用Spring 3.1 Framework的 RestTemplate 类的 exchange 方法的遗留代码。我偶然发现了一个似乎是细节的重大遗漏。当我尝试与之通信的其余客户端返回400状态代码时,会抛出 HttpClientErrorException ,但没有响应正文提供有关服务器拒绝请求的详细信息。看起来没有办法检索响应体,这将提供非常有用的信息。
我不需要弄清楚我的调用代码有什么问题,因为我已经这样做了。我只是想知道如果在呼叫上发生错误,我是否可以访问并记录HTTP响应的主体。
答案 0 :(得分:8)
响应主体实际上是HttpClientErrorException的一个属性。它可以通过以下两个访问器访问,它从父类HttpStatusCodeException继承:
public byte[] getResponseBodyAsByteArray()
public String getResponseBodyAsString()
答案 1 :(得分:0)
将HttpClientErrorException e转换为HttpStatusCodeException:
((org.springframework.web.client.HttpStatusCodeException) e).getResponseBodyAsString()