Java 不分析对象的Spring ResponseErrorHandler

Java 不分析对象的Spring ResponseErrorHandler,java,spring,http,resttemplate,Java,Spring,Http,Resttemplate,我正在使用SpringBoot和RestTemplate与另一个应用程序通信。但是,我无法更改其API,此外部服务始终返回200OK返回代码 默认情况下,我们有ResponseErrorHandler,它对所有4xx和5xx响应代码做出反应,但在我的情况下,当出现异常时,我会得到200OK,其中有一个JSON字段errors 我已经创建了一个自定义错误处理程序,并使用以下方法将其捆绑到我的rest模板中: restTemplate.errorHandler(new MyCustomErrorHa

我正在使用SpringBoot和
RestTemplate
与另一个应用程序通信。但是,我无法更改其API,此外部服务始终返回
200OK
返回代码

默认情况下,我们有
ResponseErrorHandler
,它对所有
4xx
5xx
响应代码做出反应,但在我的情况下,当出现异常时,我会得到
200OK
,其中有一个JSON字段
errors

我已经创建了一个自定义错误处理程序,并使用以下方法将其捆绑到我的rest模板中:

restTemplate.errorHandler(new MyCustomErrorHandler());
我还重写了
hasError()
方法,但在内部我必须解析这个对象,以检查它是否包含有错误的字段


这是错误处理的好方法吗?我应该解析两次响应吗?我为这些问题寻找干净的解决方案,但我希望避免每次使用外部服务时对消息进行两次解析

只有在返回错误状态时才会调用错误处理程序,200不是错误状态,因此它不会被处理

您可以通过重写hasError方法ResponseErrorHandler来检查错误消息或任何错误指示来更改此行为

public class MyCustomErrorHandler implements ResponseErrorHandler {

@Override
public boolean hasError(ClientHttpResponse httpResponse) 
        throws IOException {

    //TODO check your criteria for error
}

我确实这样做了,但在hasError中,我必须解析对Json对象的整个响应,以便检查错误字段。我忘了提那件事了。谢谢你指出这一点。