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(URI, HttpMethod, ClientHttpResponse) for more
details on specific exception types.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected CharsetgetCharset(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).voidhandleError(URI url, HttpMethod method, ClientHttpResponse response) Handle the error in the given response with the given resolved status code and extra information providing access to the request URL and HTTP method.voidhandleError(ClientHttpResponse response) Handle the error in the given response.protected voidhandleError(ClientHttpResponse response, HttpStatusCode statusCode, URI url, HttpMethod method) Handle the error based on the resolved status code.protected booleanhasError(int statusCode) Deprecated.booleanhasError(ClientHttpResponse response) Delegates tohasError(HttpStatusCode)with the response status code.protected booleanhasError(HttpStatusCode statusCode) Template method called fromhasError(ClientHttpResponse).protected Function<ResolvableType,?> initBodyConvertFunction(ClientHttpResponse response, byte[] body) Return a function for decoding the error content.
-
Constructor Details
-
DefaultResponseErrorHandler
public DefaultResponseErrorHandler()
-
-
Method Details
-
hasError
Delegates tohasError(HttpStatusCode)with the response status code.- Specified by:
hasErrorin interfaceResponseErrorHandler- Parameters:
response- the response to inspect- Returns:
trueif the response indicates an error;falseotherwise- 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:
trueif the response indicates an error;falseotherwise- See Also:
-
hasError
Deprecated.in favor ofhasError(HttpStatusCode)Template method called fromhasError(ClientHttpResponse).The default implementation checks if the given status code is
CLIENT_ERRORorSERVER_ERROR. Can be overridden in subclasses.- Parameters:
statusCode- the HTTP status code as raw value- Returns:
trueif the response indicates an error;falseotherwise- Since:
- 4.3.21
- See Also:
-
handleError
Handle the error in the given response with the given resolved status code and extra information providing access to the request URL and HTTP method.The default implementation throws:
HttpClientErrorExceptionif the status code is in the 4xx series, or one of its sub-classes such asHttpClientErrorException.BadRequestand others.HttpServerErrorExceptionif the status code is in the 5xx series, or one of its sub-classes such asHttpServerErrorException.InternalServerErrorand others.UnknownHttpStatusCodeExceptionfor error status codes not in theHttpStatusenum range.
- Specified by:
handleErrorin interfaceResponseErrorHandler- Parameters:
url- the request URLmethod- the HTTP methodresponse- the response with the error- Throws:
UnknownHttpStatusCodeException- in case of an unresolvable status codeIOException- in case of I/O errors- Since:
- 6.2
- See Also:
-
handleError
Description copied from interface:ResponseErrorHandlerHandle the error in the given response.This method is only called when
ResponseErrorHandler.hasError(ClientHttpResponse)has returnedtrue.- Specified by:
handleErrorin interfaceResponseErrorHandler- Parameters:
response- the response with the error- Throws:
IOException- in case of I/O errors
-
handleError
protected void handleError(ClientHttpResponse response, HttpStatusCode statusCode, @Nullable URI url, @Nullable HttpMethod method) 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:
- 6.2
- 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)
-
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
nullif none - Since:
- 4.3.8
-
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
-
hasError(HttpStatusCode)