Package com.google.api.client.http
Interface HttpUnsuccessfulResponseHandler
-
- All Known Implementing Classes:
HttpBackOffUnsuccessfulResponseHandler
,MockHttpUnsuccessfulResponseHandler
public interface HttpUnsuccessfulResponseHandler
Interface which handles abnormal HTTP responses (in other words not 2XX).For example, this might be used to refresh an OAuth 2 token:
public static class RefreshTokenHandler implements HttpUnsuccessfulResponseHandler { public boolean handleResponse( HttpRequest request, HttpResponse response, boolean retrySupported) throws IOException { if (response.getStatusCode() == HttpStatusCodes.STATUS_CODE_UNAUTHORIZED) { refreshToken(); } return false; } }
Sample usage with a request factory:
public static HttpRequestFactory createRequestFactory(HttpTransport transport) { final RefreshTokenHandler handler = new RefreshTokenHandler(); return transport.createRequestFactory(new HttpRequestInitializer() { public void initialize(HttpRequest request) { request.setUnsuccessfulResponseHandler(handler); } }); }
More complex usage example:
public static HttpRequestFactory createRequestFactory2(HttpTransport transport) { final RefreshTokenHandler handler = new RefreshTokenHandler(); return transport.createRequestFactory(new HttpRequestInitializer() { public void initialize(HttpRequest request) { request.setUnsuccessfulResponseHandler(new HttpUnsuccessfulResponseHandler() { public boolean handleResponse( HttpRequest request, HttpResponse response, boolean retrySupported) throws IOException { return handler.handleResponse(request, response, retrySupported); } }); } }); }
- Since:
- 1.4
- Author:
- moshenko@google.com (Jacob Moshenko)
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description boolean
handleResponse(HttpRequest request, HttpResponse response, boolean supportsRetry)
Handler that will be invoked when an abnormal response is received.
-
-
-
Method Detail
-
handleResponse
boolean handleResponse(HttpRequest request, HttpResponse response, boolean supportsRetry) throws IOException
Handler that will be invoked when an abnormal response is received. There are a few simple rules that one must follow:- If you modify the request object or modify its execute interceptors in a way that should resolve the error, you must return true to issue a retry.
- Do not read from the content stream, this will prevent the eventual end user from having access to it.
- Parameters:
request
- Request object that can be read from for context or modified before retryresponse
- Response to processsupportsRetry
- Whether there will actually be a retry if this handler returntrue
. Some handlers may want to have an effect only when there will actually be a retry after they handle their event (e.g. a handler that implements exponential backoff).- Returns:
- Whether or not this handler has made a change that will require the request to be re-sent.
- Throws:
IOException
-
-