Class ExtractingResponseErrorHandler
- All Implemented Interfaces:
ResponseErrorHandler
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
.
- Since:
- 5.0
- Author:
- Simon Galperin, Arjen Poutsma
- See Also:
-
Constructor Summary
ConstructorDescriptionCreate a new, emptyExtractingResponseErrorHandler
.ExtractingResponseErrorHandler
(List<HttpMessageConverter<?>> messageConverters) Create a newExtractingResponseErrorHandler
with the givenHttpMessageConverter
instances. -
Method Summary
Modifier and TypeMethodDescriptionvoid
handleError
(ClientHttpResponse response, HttpStatusCode statusCode) Handle the error based on the resolved status code.protected boolean
hasError
(HttpStatusCode statusCode) Template method called fromDefaultResponseErrorHandler.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 toRestClientException
subclass.void
setStatusMapping
(Map<HttpStatusCode, Class<? extends RestClientException>> statusMapping) Set the mapping from HTTP status code toRestClientException
subclass.Methods inherited from class org.springframework.web.client.DefaultResponseErrorHandler
getCharset, getResponseBody, handleError, hasError, hasError, initBodyConvertFunction
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.web.client.ResponseErrorHandler
handleError
-
Constructor Details
-
ExtractingResponseErrorHandler
public ExtractingResponseErrorHandler()Create a new, emptyExtractingResponseErrorHandler
.Note that
setMessageConverters(List)
must be called when using this constructor. -
ExtractingResponseErrorHandler
Create a newExtractingResponseErrorHandler
with the givenHttpMessageConverter
instances.- Parameters:
messageConverters
- the message converters to use
-
-
Method Details
-
setMessageConverters
Set the message converters to use by this extractor. -
setStatusMapping
public void setStatusMapping(Map<HttpStatusCode, Class<? extends RestClientException>> statusMapping) Set the mapping from HTTP status code toRestClientException
subclass. If this mapping has a match for the status code of a givenClientHttpResponse
,DefaultResponseErrorHandler.hasError(ClientHttpResponse)
will returntrue
andDefaultResponseErrorHandler.handleError(ClientHttpResponse)
will attempt to use the configured message converters to convert the response into the mapped subclass ofRestClientException
. -
setSeriesMapping
public void setSeriesMapping(Map<HttpStatus.Series, Class<? extends RestClientException>> seriesMapping) Set the mapping from HTTP status series toRestClientException
subclass. If this mapping has a match for the status code of a givenClientHttpResponse
,DefaultResponseErrorHandler.hasError(ClientHttpResponse)
will returntrue
andDefaultResponseErrorHandler.handleError(ClientHttpResponse)
will attempt to use the configured message converters to convert the response into the mapped subclass ofRestClientException
. -
hasError
Description copied from class:DefaultResponseErrorHandler
Template method called fromDefaultResponseErrorHandler.hasError(ClientHttpResponse)
.The default implementation checks
HttpStatusCode.isError()
. Can be overridden in subclasses.- Overrides:
hasError
in classDefaultResponseErrorHandler
- Parameters:
statusCode
- the HTTP status code- Returns:
true
if the response indicates an error;false
otherwise- See Also:
-
handleError
Description copied from class:DefaultResponseErrorHandler
Handle the error based on the resolved status code.The default implementation delegates to
HttpClientErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)
for errors in the 4xx range, toHttpServerErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)
for errors in the 5xx range, or otherwise raisesUnknownHttpStatusCodeException
.- Overrides:
handleError
in classDefaultResponseErrorHandler
- Throws:
IOException
- See Also:
-
HttpClientErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)
HttpServerErrorException.create(org.springframework.http.HttpStatusCode, java.lang.String, org.springframework.http.HttpHeaders, byte[], java.nio.charset.Charset)
-