Java SpringRestTemplate引发400错误异常,但CloseableHttpClient未引发
我们正在使用spring版本4.3.9,并使用RestTemplate进行rest调用。我们有一些测试用例,当我们调用一个特定的端点时,我们故意有格式不好的内容(请求本身很好,负载的内容故意格式不好) 无论如何,在这些条件下,端点除了将响应对象标记为400错误(错误请求)之外,还返回一个包含有意义信息的响应对象。RestTemplate看到400错误并抛出HttpClientErrorException。由于引发了此异常,因此响应对象为null 当我使用常规ApacheHttpClient调用执行相同的请求(坏数据和所有数据)时,没有抛出异常(尽管出现400错误),并且请求对象返回有意义(有用)的信息 当使用广泛的spring调试日志设置执行时,我可以看到有意义的信息肯定是从RestTemplate客户端调用返回的,但是RestTemplate抛出异常,因此似乎无法使消息对调用方可用 是否有可能将有意义的消息隐藏在异常响应的某个地方?如果是,我如何提取它 如果不是作为异常的一部分返回,是否有一种方法可以防止RestTemplate抛出此异常,而只是像HttpClient那样返回响应对象 谢谢你的回复 是否有可能将有意义的消息隐藏在异常响应的某个地方 是的,响应的主体在异常对象中 要获取响应的主体,可以使用:Java SpringRestTemplate引发400错误异常,但CloseableHttpClient未引发,java,spring,spring-boot,resttemplate,Java,Spring,Spring Boot,Resttemplate,我们正在使用spring版本4.3.9,并使用RestTemplate进行rest调用。我们有一些测试用例,当我们调用一个特定的端点时,我们故意有格式不好的内容(请求本身很好,负载的内容故意格式不好) 无论如何,在这些条件下,端点除了将响应对象标记为400错误(错误请求)之外,还返回一个包含有意义信息的响应对象。RestTemplate看到400错误并抛出HttpClientErrorException。由于引发了此异常,因此响应对象为null 当我使用常规ApacheHttpClient调用执
HttpClientErrorException.getResponseBodyAsString()
或HttpClientErrorException.getResponseBodyAsByteArray()
方法
检查就这样!。HttpClientErrorException.getResponseBodyAsString()正是我所需要的,并回答了这篇文章。谢谢