为了账号安全,请及时绑定邮箱和手机立即绑定

Spring RestTemplate 为 400 错误引发异常

Spring RestTemplate 为 400 错误引发异常

幕布斯6054654 2022-07-14 10:09:23
我们正在使用 spring 版本 4.3.9 并使用 RestTemplate 进行休息调用。我们有测试用例,当我们调用特定端点时,我们故意将内容格式错误(请求本身很好,有效负载的内容是故意格式错误的)。无论如何,在这些条件下,端点除了将其标记为 400 错误(错误请求)之外,还会返回一个包含有意义信息的响应对象。RestTemplate 看到 400 错误并引发 HttpClientErrorException。由于抛出此异常,因此响应对象为空。当我使用常规 apache HttpClient 调用执行相同的请求(坏数据和所有数据)时,没有抛出异常(尽管出现 400 错误)并且请求对象返回了有意义的(有用的)信息。当使用广泛的 spring 调试日志设置执行时,我可以看到有意义的信息肯定是从 RestTemplate 客户端调用返回的,但是 RestTemplate 抛出异常,因此似乎没有使消息对调用者可用。有意义的消息是否可能隐藏在某处的异常响应中?如果是这样,我该如何提取它?如果没有作为异常的一部分返回,有没有办法让 RestTemplate 不抛出这个异常,而是像 HttpClient 一样只返回响应对象?感谢您的任何回复!
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

有意义的消息是否可能隐藏在某处的异常响应中?

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

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

检查这个


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 345 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信