public class ExtractingResponseErrorHandler extends DefaultResponseErrorHandler
ResponseErrorHandler that uses HttpMessageConverters to convert HTTP error responses to RestClientExceptions.
To use this error handler, you must specify a
status mapping and/or a
series mapping. If either of these mappings has a match
for the status code of a given
ClientHttpResponse, DefaultResponseErrorHandler.hasError(ClientHttpResponse) will return
true, and DefaultResponseErrorHandler.handleError(ClientHttpResponse) will attempt to use the
configured message converters to convert the response
into the mapped subclass of RestClientException. Note that the
status mapping takes precedence over
series mapping.
If there is no match, this error handler will default to the behavior of
DefaultResponseErrorHandler. Note that you can override this default behavior
by specifying a series mapping from
HttpStatus.Series#CLIENT_ERROR and/or HttpStatus.Series#SERVER_ERROR
to null.
RestTemplate.setErrorHandler(ResponseErrorHandler)| Constructor and Description |
|---|
ExtractingResponseErrorHandler()
Create a new, empty
ExtractingResponseErrorHandler. |
ExtractingResponseErrorHandler(List<HttpMessageConverter<?>> messageConverters)
Create a new
ExtractingResponseErrorHandler with the given
HttpMessageConverter instances. |
| Modifier and Type | Method and Description |
|---|---|
void |
handleError(ClientHttpResponse response,
HttpStatus statusCode)
Handle the error based on the resolved status code.
|
protected boolean |
hasError(HttpStatus statusCode)
Template method called from
DefaultResponseErrorHandler.hasError(ClientHttpResponse). |
void |
setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Set the message converters to use by this extractor.
|
void |
setSeriesMapping(Map<HttpStatus.Series,Class<? extends RestClientException>> seriesMapping)
Set the mapping from HTTP status series to
RestClientException subclass. |
void |
setStatusMapping(Map<HttpStatus,Class<? extends RestClientException>> statusMapping)
Set the mapping from HTTP status code to
RestClientException subclass. |
getCharset, getHttpStatusCode, getResponseBody, handleError, hasError, hasErrorclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waithandleErrorpublic ExtractingResponseErrorHandler()
ExtractingResponseErrorHandler.
Note that setMessageConverters(List) must be called when using this constructor.
public ExtractingResponseErrorHandler(List<HttpMessageConverter<?>> messageConverters)
ExtractingResponseErrorHandler with the given
HttpMessageConverter instances.messageConverters - the message converters to usepublic void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
public void setStatusMapping(Map<HttpStatus,Class<? extends RestClientException>> statusMapping)
RestClientException subclass.
If this mapping has a match
for the status code of a given
ClientHttpResponse, DefaultResponseErrorHandler.hasError(ClientHttpResponse) will return
true and DefaultResponseErrorHandler.handleError(ClientHttpResponse) will attempt to use the
configured message converters to convert the
response into the mapped subclass of RestClientException.public void setSeriesMapping(Map<HttpStatus.Series,Class<? extends RestClientException>> seriesMapping)
RestClientException subclass.
If this mapping has a match
for the status code of a given
ClientHttpResponse, DefaultResponseErrorHandler.hasError(ClientHttpResponse) will return
true and DefaultResponseErrorHandler.handleError(ClientHttpResponse) will attempt to use the
configured message converters to convert the
response into the mapped subclass of RestClientException.protected boolean hasError(HttpStatus statusCode)
DefaultResponseErrorHandlerDefaultResponseErrorHandler.hasError(ClientHttpResponse).
The default implementation checks HttpStatus.isError().
Can be overridden in subclasses.
hasError in class DefaultResponseErrorHandlerstatusCode - the HTTP status code as enum valuetrue if the response indicates an error; false otherwiseHttpStatus.isError()public void handleError(ClientHttpResponse response, HttpStatus statusCode) throws IOException
DefaultResponseErrorHandlerThe default implementation delegates to
HttpClientErrorException.create(org.springframework.http.HttpStatus, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset) for errors in the 4xx range, to
HttpServerErrorException.create(org.springframework.http.HttpStatus, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset) for errors in the 5xx range,
or otherwise raises UnknownHttpStatusCodeException.
handleError in class DefaultResponseErrorHandlerIOExceptionHttpClientErrorException.create(org.springframework.http.HttpStatus, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset),
HttpServerErrorException.create(org.springframework.http.HttpStatus, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)