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
 handleError(ClientHttpResponse, HttpStatusCode, URI, HttpMethod)
 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 SummaryConstructorsConstructorDescriptionCreate a new, emptyExtractingResponseErrorHandler.ExtractingResponseErrorHandler(List<HttpMessageConverter<?>> messageConverters) Create a newExtractingResponseErrorHandlerwith the givenHttpMessageConverterinstances.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidhandleError(ClientHttpResponse response, HttpStatusCode statusCode, URI url, HttpMethod method) Handle the error based on the resolved status code.protected booleanhasError(HttpStatusCode statusCode) Template method called fromDefaultResponseErrorHandler.hasError(ClientHttpResponse).voidsetMessageConverters(List<HttpMessageConverter<?>> messageConverters) Set the message converters to use by this extractor.voidsetSeriesMapping(Map<HttpStatus.Series, Class<? extends RestClientException>> seriesMapping) Set the mapping from HTTP status series toRestClientExceptionsubclass.voidsetStatusMapping(Map<HttpStatusCode, Class<? extends RestClientException>> statusMapping) Set the mapping from HTTP status code toRestClientExceptionsubclass.Methods inherited from class org.springframework.web.client.DefaultResponseErrorHandlergetCharset, getResponseBody, handleError, handleError, hasError, hasError, initBodyConvertFunction
- 
Constructor Details- 
ExtractingResponseErrorHandlerpublic ExtractingResponseErrorHandler()Create a new, emptyExtractingResponseErrorHandler.Note that setMessageConverters(List)must be called when using this constructor.
- 
ExtractingResponseErrorHandlerCreate a newExtractingResponseErrorHandlerwith the givenHttpMessageConverterinstances.- Parameters:
- messageConverters- the message converters to use
 
 
- 
- 
Method Details- 
setMessageConvertersSet the message converters to use by this extractor.
- 
setStatusMappingpublic void setStatusMapping(Map<HttpStatusCode, Class<? extends RestClientException>> statusMapping) Set the mapping from HTTP status code toRestClientExceptionsubclass. If this mapping has a match for the status code of a givenClientHttpResponse,DefaultResponseErrorHandler.hasError(ClientHttpResponse)will returntrueandhandleError(ClientHttpResponse, HttpStatusCode, URI, HttpMethod)will attempt to use the configured message converters to convert the response into the mapped subclass ofRestClientException.
- 
setSeriesMappingpublic void setSeriesMapping(Map<HttpStatus.Series, Class<? extends RestClientException>> seriesMapping) Set the mapping from HTTP status series toRestClientExceptionsubclass. If this mapping has a match for the status code of a givenClientHttpResponse,DefaultResponseErrorHandler.hasError(ClientHttpResponse)will returntrueandhandleError(ClientHttpResponse, HttpStatusCode, URI, HttpMethod)will attempt to use the configured message converters to convert the response into the mapped subclass ofRestClientException.
- 
hasErrorDescription copied from class:DefaultResponseErrorHandlerTemplate method called fromDefaultResponseErrorHandler.hasError(ClientHttpResponse).The default implementation checks HttpStatusCode.isError(). Can be overridden in subclasses.- Overrides:
- hasErrorin class- DefaultResponseErrorHandler
- Parameters:
- statusCode- the HTTP status code
- Returns:
- trueif the response indicates an error;- falseotherwise
- See Also:
 
- 
handleErrorprotected void handleError(ClientHttpResponse response, HttpStatusCode statusCode, @Nullable URI url, @Nullable HttpMethod method) throws IOException Description copied from class:DefaultResponseErrorHandlerHandle 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:
- handleErrorin class- DefaultResponseErrorHandler
- 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)
 
 
 
-