Java Spring HttpClientErrorException未提供响应正文的详细信息
我正在更新使用Spring3.1框架的RestTemplate类的exchange方法的遗留代码。我发现了一个重大的细节遗漏。当我尝试与之通信的rest客户端返回400状态代码时,将抛出一个HttpClientErrorException,但没有响应正文提供服务器拒绝请求的详细信息。似乎没有办法检索将提供非常有用信息的响应主体Java Spring HttpClientErrorException未提供响应正文的详细信息,java,spring,rest,Java,Spring,Rest,我正在更新使用Spring3.1框架的RestTemplate类的exchange方法的遗留代码。我发现了一个重大的细节遗漏。当我尝试与之通信的rest客户端返回400状态代码时,将抛出一个HttpClientErrorException,但没有响应正文提供服务器拒绝请求的详细信息。似乎没有办法检索将提供非常有用信息的响应主体 我不需要找出调用代码中的错误,因为我已经这样做了。我只是想知道,如果调用发生错误,是否有某种方法可以访问并记录HTTP响应的主体。响应主体实际上是HttpClientEr
我不需要找出调用代码中的错误,因为我已经这样做了。我只是想知道,如果调用发生错误,是否有某种方法可以访问并记录HTTP响应的主体。响应主体实际上是HttpClientErrorException上的一个属性。它可以通过从其父类HttpStatusCodeException继承的以下两个访问器进行访问:
public byte[] getResponseBodyAsByteArray()
public String getResponseBodyAsString()
((org.springframework.web.client.HttpStatusCodeException) e).getResponseBodyAsString()
将您的HttpClientErrorException强制转换为HttpStatusCodeException:
public byte[] getResponseBodyAsByteArray()
public String getResponseBodyAsString()
((org.springframework.web.client.HttpStatusCodeException) e).getResponseBodyAsString()
从代码看,所有这些信息都包含在
HttpClientErrorException
:感谢您的评论。引发异常时没有响应主体。这就是我从堆栈跟踪中得到的所有信息<代码>org.springframework.web.client.HttpClientErrorException:400错误请求。在异常上有一个实际的方法来获取响应正文。您得到响应了吗?我的HttpClientErrorException没有正文,但测试的请求(使用RestTemplate)返回状态401和JSON,我无法获得该状态。下面的答案显示了获取HTTP响应正文的两种方法。这对你不管用吗?没必要投了。HttpClientErrorException已经从HttpStatusCodeException继承了该方法。