Class DefaultResponseErrorHandler
- All Implemented Interfaces:
ResponseErrorHandler
- Direct Known Subclasses:
ExtractingResponseErrorHandler
ResponseErrorHandler
interface.
This error handler checks for the status code on the
ClientHttpResponse
. Any code in the 4xx or 5xx series is considered
to be an error. This behavior can be changed by overriding
hasError(HttpStatusCode)
. Unknown status codes will be ignored by
hasError(ClientHttpResponse)
.
See handleError(ClientHttpResponse)
for more details on specific
exception types.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected Charset
getCharset
(ClientHttpResponse response) Determine the charset of the response (for inclusion in a status exception).protected byte[]
getResponseBody
(ClientHttpResponse response) Read the body of the given response (for inclusion in a status exception).void
handleError
(ClientHttpResponse response) Handle the error in the given response with the given resolved status code.protected void
handleError
(ClientHttpResponse response, HttpStatusCode statusCode) Handle the error based on the resolved status code.protected boolean
hasError
(int statusCode) Deprecated.boolean
hasError
(ClientHttpResponse response) Delegates tohasError(HttpStatusCode)
with the response status code.protected boolean
hasError
(HttpStatusCode statusCode) Template method called fromhasError(ClientHttpResponse)
.protected Function<ResolvableType,
?> initBodyConvertFunction
(ClientHttpResponse response, byte[] body) Return a function for decoding the error content.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
-
DefaultResponseErrorHandler
public DefaultResponseErrorHandler()
-
-
Method Details
-
hasError
Delegates tohasError(HttpStatusCode)
with the response status code.- Specified by:
hasError
in interfaceResponseErrorHandler
- Parameters:
response
- the response to inspect- Returns:
true
if the response indicates an error;false
otherwise- Throws:
IOException
- in case of I/O errors- See Also:
-
hasError
Template method called fromhasError(ClientHttpResponse)
.The default implementation checks
HttpStatusCode.isError()
. Can be overridden in subclasses.- Parameters:
statusCode
- the HTTP status code- Returns:
true
if the response indicates an error;false
otherwise- See Also:
-
hasError
Deprecated.in favor ofhasError(HttpStatusCode)
Template method called fromhasError(ClientHttpResponse)
.The default implementation checks if the given status code is
CLIENT_ERROR
orSERVER_ERROR
. Can be overridden in subclasses.- Parameters:
statusCode
- the HTTP status code as raw value- Returns:
true
if the response indicates an error;false
otherwise- Since:
- 4.3.21
- See Also:
-
handleError
Handle the error in the given response with the given resolved status code.The default implementation throws:
HttpClientErrorException
if the status code is in the 4xx series, or one of its sub-classes such asHttpClientErrorException.BadRequest
and others.HttpServerErrorException
if the status code is in the 5xx series, or one of its sub-classes such asHttpServerErrorException.InternalServerError
and others.UnknownHttpStatusCodeException
for error status codes not in theHttpStatus
enum range.
- Specified by:
handleError
in interfaceResponseErrorHandler
- Parameters:
response
- the response with the error- Throws:
UnknownHttpStatusCodeException
- in case of an unresolvable status codeIOException
- in case of I/O errors- See Also:
-
handleError
protected void handleError(ClientHttpResponse response, HttpStatusCode statusCode) throws IOException 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
.- Throws:
IOException
- Since:
- 5.0
- 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)
-
initBodyConvertFunction
protected Function<ResolvableType,?> initBodyConvertFunction(ClientHttpResponse response, byte[] body) Return a function for decoding the error content. This can be passed toRestClientResponseException.setBodyConvertFunction(Function)
.- Since:
- 6.0
-
getResponseBody
Read the body of the given response (for inclusion in a status exception).- Parameters:
response
- the response to inspect- Returns:
- the response body as a byte array, or an empty byte array if the body could not be read
- Since:
- 4.3.8
-
getCharset
Determine the charset of the response (for inclusion in a status exception).- Parameters:
response
- the response to inspect- Returns:
- the associated charset, or
null
if none - Since:
- 4.3.8
-
hasError(HttpStatusCode)