1
renfei 2023-08-03 11:54:02 +08:00
是不是请求头中 Accept 不同?
|
2
hulalalla 2023-08-03 13:56:21 +08:00
这个问题的原因是,Spring Web 的 RestTemplate 在处理 HTTP 请求时,会先调用 HttpMessageConverter 来将 HTTP 响应转换为对象,然后再调用全局异常处理器来处理异常。而 Apache 的 HttpClient 在处理 HTTP 请求时,只会调用全局异常处理器来处理异常。
所以,在正常情况下,两者都会得到相同的结果。但在异常情况下,RestTemplate 会得到经过消息处理器转换后的结果,而 HttpClient 会得到原始的异常信息。 要解决这个问题,可以为 RestTemplate 设置一个自定义的 HttpMessageConverter ,来将 HTTP 响应转换为你想要的格式。 |
3
vagusss 2023-08-03 14:08:01 +08:00
建议贴一下代码,看看两种处理 body 的方式是否相同, 或者你直接用 postman 之类的工具调用试试
|
4
linjiece543 OP @renfei 谢谢解答,经过调试确实是这个问题,httpclient 没有默认的 accept ,所以在消息转换器的选择时选择到了 StringHttpMessageConverter,没有走到我那个消息转换器
|