Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring HttpClientErrorException未提供响应正文的详细信息_Java_Spring_Rest - Fatal编程技术网

Java Spring HttpClientErrorException未提供响应正文的详细信息

Java Spring HttpClientErrorException未提供响应正文的详细信息,java,spring,rest,Java,Spring,Rest,我正在更新使用Spring3.1框架的RestTemplate类的exchange方法的遗留代码。我发现了一个重大的细节遗漏。当我尝试与之通信的rest客户端返回400状态代码时,将抛出一个HttpClientErrorException,但没有响应正文提供服务器拒绝请求的详细信息。似乎没有办法检索将提供非常有用信息的响应主体 我不需要找出调用代码中的错误,因为我已经这样做了。我只是想知道,如果调用发生错误,是否有某种方法可以访问并记录HTTP响应的主体。响应主体实际上是HttpClientEr

我正在更新使用Spring3.1框架的RestTemplate类的exchange方法的遗留代码。我发现了一个重大的细节遗漏。当我尝试与之通信的rest客户端返回400状态代码时,将抛出一个HttpClientErrorException,但没有响应正文提供服务器拒绝请求的详细信息。似乎没有办法检索将提供非常有用信息的响应主体


我不需要找出调用代码中的错误,因为我已经这样做了。我只是想知道,如果调用发生错误,是否有某种方法可以访问并记录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继承了该方法。