Spring
RestTemplate使用
ResponseErrorHandler来处理响应中的错误。此接口提供了一种确定响应是否有错误(
ResponseErrorHandler#hasError(ClientHttpResponse))以及如何处理该错误(
ResponseErrorHandler#handleError(ClientHttpResponse))的方式。
您可以设置
RestTemplate的
ResponseErrorHandler与
RestTemplate#setErrorHandler(ResponseErrorHandler)它的javadoc状态
默认情况下,
RestTemplate使用DefaultResponseErrorHandler。
此默认实现
[…]检查以下代码上的状态代码
ClientHttpResponse:任何带有系列HttpStatus.Series.CLIENT_ERROR或被HttpStatus.Series.SERVER_ERROR认为是错误的代码。可以通过重写hasError(HttpStatus)方法来更改此行为。
如果发生错误,它将引发您所看到的异常。
如果您想更改此行为,则可以提供自己的
ResponseErrorHandler实现(也许通过重写
DefaultResponseErrorHandler),该实现不会将4xx视为错误或不会引发异常。
例如
restTemplate.setErrorHandler(new ResponseErrorHandler() { @Override public boolean hasError(ClientHttpResponse response) throws IOException { return false; // or whatever you consider an error } @Override public void handleError(ClientHttpResponse response) throws IOException { // do nothing, or something }});
然后,您可以检查
ResponseEntity返回的状态码
getForEntity并自行处理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)