Class HttpRedirector


  • public class HttpRedirector
    extends Object
    Utility class that handles HTTP redirects.

    Applications can disable redirection via Request.followRedirects(boolean) and then rely on this class to perform the redirect in a simpler way, for example:

     HttpRedirector redirector = new HttpRedirector(httpClient);
    
     Request request = httpClient.newRequest("http://host/path").followRedirects(false);
     ContentResponse response = request.send();
     while (redirector.isRedirect(response))
     {
         // Validate the redirect URI
         if (!validate(redirector.extractRedirectURI(response)))
             break;
    
         Result result = redirector.redirect(request, response);
         request = result.getRequest();
         response = result.getResponse();
     }
     
    • Constructor Detail

      • HttpRedirector

        public HttpRedirector​(HttpClient client)
    • Method Detail

      • isRedirect

        public boolean isRedirect​(Response response)
        Parameters:
        response - the response to check for redirects
        Returns:
        whether the response code is a HTTP redirect code
      • redirect

        public Request redirect​(Request request,
                                Response response,
                                Response.CompleteListener listener)
        Redirects the given response asynchronously.
        Parameters:
        request - the original request that triggered the redirect
        response - the response to the original request
        listener - the listener that receives response events
        Returns:
        the request to the redirected location
      • extractRedirectURI

        public URI extractRedirectURI​(Response response)
        Extracts and sanitizes (by making it absolute and escaping paths and query parameters) the redirect URI of the given response.
        Parameters:
        response - the response to extract the redirect URI from
        Returns:
        the absolute redirect URI, or null if the response does not contain a valid redirect location