hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ryan Stewart (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HTTPCLIENT-928) Can't get list of redirect locations
Date Thu, 01 Apr 2010 16:32:27 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12852438#action_12852438

Ryan Stewart commented on HTTPCLIENT-928:

Sorry, for some reason that approach to extending the DefaultRedirectHandler didn't occur
to me. That should work, but I actually took the second approach you suggested. I extended
RedirectLocations and overrode all of its methods to work off of a List of URIs instead of
a Set. Then I injected my custom instance into the HttpContext before making the request.
When the DefaultRedirectHandler handles a redirect, it looks for an existing RedirectLocations
object first, so this worked. It isn't quite an ideal solution, though, since disabling HttpClient's
circular redirect detection causes the RedirectLocations object to not be used at all. Since
I want to allow circular redirects but also track redirect URIs, I just overrode the RedirectLocations.contains()
method to always return false. It works like this, but it's unintuitive.

> Can't get list of redirect locations
> ------------------------------------
>                 Key: HTTPCLIENT-928
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-928
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpClient
>    Affects Versions: 4.0.1
>            Reporter: Ryan Stewart
> HttpClient does a great job of following redirects, but afterward there doesn't seem
to be any way to see the URLs that it followed in the redirect chain. They are stored internally
by the DefaultRedirectHandler in the HttpContext in an attribute named "http.protocol.redirect-locations",
but the RedirectLocations object that contains them stores them in a Set, so there's no way
of knowing in what order the URLs were visited.
> Here's an example of why I need it:
> 1) Use HttpClient to retrieve http://foo.com
> 2) http://foo.com returns a 301 redirect to http://foo.com/bar, so HttpClient follows
the redirect and returns the page to me
> 3) http://foo.com/bar refers to a relative resource like "baz.html".
> That relative resource should resolve to "http://foo.com/bar/baz.html". I only know that,
though, if I can look at the redirect URL that HttpClient got in step 2. Currently, I don't
seem to be able to do that.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message