当前位置: 首页 > 知识库问答 >
问题:

Spring RestTemplate为400错误抛出异常,但CloseableHttpClient不会

党佐
2023-03-14

无论如何,在这些条件下,endpoint返回一个包含有意义信息的响应对象,并将其标记为400错误(错误请求)。RestTemplate将看到400错误并抛出HttpClienterRoreXception。由于抛出此异常,因此响应对象为NULL。

当我使用常规apache HttpClient调用执行相同的请求(坏数据和所有)时,不会引发异常(尽管出现400错误),并且返回有意义(有用)的请求对象。

当使用广泛的spring调试日志记录设置执行时,我可以看到有意义的信息肯定是从RestTemplate客户端调用返回的,但是RestTemplate抛出异常,因此似乎不能使消息对调用者有效。

如果不作为异常的一部分返回,是否有一种方法可以阻止RestTemplate抛出此异常,而是像HttpClient那样返回响应对象?

谢谢你的回应!

共有1个答案

夏祯
2023-03-14

有意义的消息是否可能被隐藏在异常响应的某个地方?

是的,响应的主体在异常对象中。

要获取响应的正文,可以使用:HttpClientRorexCeption.getResponseBodyAsString()HttpClientRorexCeption.getResponseBodyAsByteArray()方法。

 类似资料:
  • 我读过这段代码,其中接口抛出异常,但实现它的类没有抛出异常或捕获异常,这是为什么?它在java中是合法的还是安全的?

  • 下面是我的代码。当我运行它时,我在线程“main”java.lang.IndexOutOfBoundsException:Index:3、Size:2中得到异常,而不是我的异常消息。谁能解释一下我做错了什么,为什么会这样?谢谢!

  • 因此,我使用服务器(google-app-engine)在客户端应用程序上进行身份验证。当我使用JavaFX、Webview或HttpsURLConnection时,一切都很好,它们连接起来了,但是当我使用HttpClient时,它会抛出以下错误 javax.net.ssl.sslpeerunverifiedexception:peer未在sun.security.ssl.sslsessionim

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 问题内容: 我只是使用a 从这样的用户那里获取最新的tweet: 这在我的本地主机上运行良好,但是当我将其上传到服务器时会引发以下错误: 警告: file_get_contents(http://api.twitter.com/1/statuses/user_timeline/User.json)[function.file- get-contents]:无法打开流:HTTP请求失败!HTTP /

  • 嗨,我试图连接弹性搜索使用Spring rest模板,但它给例外说不好的请求 它给出了这个例外。 请告诉我这是我第一次这么做