[ 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to