hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From DrewC <nab...@drewcox.com>
Subject Re: Redirected - but where? HttpClient 4
Date Thu, 22 May 2008 15:01:26 GMT

Ok, I guess I just needed to keep banging on this for another hour.  I am now
using a non-default context with the execute and then reconstructing the
final require URL with:

                HttpUriRequest finalRequest =
		    (HttpUriRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);
		HttpHost host = (HttpHost)

		StringBuilder uriString = new StringBuilder();
		uriString.append(host.getSchemeName() + "://");
		if (host.getPort() != -1) {
			uriString.append(":" + host.getPort());

If anyone could confirm this is the right method, that would be appreciated.


DrewC wrote:
> Hi, I am trying to do basically exactly what Magnus was attempting, to
> access the final full URL to the resource after following 
> redirects.  But I have had no success attempting the techniques seen here,
> though I admit to being a bit confused by them.  I have not had to deal
> with the HttpContext previously and I am not exactly sure which
> HttpGetMethod Olek suggests to cast.  But with my simplistic approach,
> after the request is executed (with httpClient.execute(httpGet) and I have
> confirmed several redirects already occured and were followed, the   
>   HttpGet.getURI
>   (HttpUriRequest)httpGet).getURI()
>   (HttpUriRequest)httpGet).getRequestLine().getUri()
> all still retains the intial URL, not the final one.  I am using a shared
> HttpClient (created via ThreadSafeClientConnManager), not sure if that
> makes any difference. 
> Any help appreciated. 
> Drew
> olegk wrote:
>> On Sun, 2008-01-06 at 04:50 -0800, MaGGE wrote:
>>> Hello,
>>> I've just started using HttpClient for a little util I'm making. I'm
>>> letting
>>> it handle_redirects=true, but I need to process the URL it's been
>>> redirected
>>> to. How can I find the "current URL" after I've executed a request that
>>> was
>>> redirected?
>>> I've tried a couple of things - which I feel is "wrong". First thing was
>>> to
>>> disable handle_redirects, and look for the "Location" header in a loop
>>> of my
>>> own. Challenge with this was that I could not see any way to replace the
>>> URI
>>> for the request object, so I'd have to make a new one - which is a
>>> problem
>>> because my method should be able to process any HttpUriRequest.
>>> Second I tried to add a HttpRequestInterceptor to the client. But all I
>>> can
>>> get from the HttpRequest object given to the process method is the
>>> RequestLine. That one only has the info found behind GET/POST etc, that
>>> is
>>> only the path and method. I'm still lacking the host, protocol and so
>>> on.
>>> I'm sure there's an easy way to do this that I've just missed ... Please
>>> advice. :)
>>> Thanks for your time,
>>> Magnus
>> Hi Magnus
>> In addition to getting HttpHost out of the execution context, you may
>> also
>> (1) cast HttpRequest to HttpUriRequest in order to get the full request
>> URI
>> (2) extend or replace the default RedirectHandler with a custom one and
>> implement whatever redirect handling logic you deem appropriate
>> Hope this helps
>> Oleg
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org

View this message in context: http://www.nabble.com/Redirected---but-where--HttpClient-4-tp14648060p17406176.html
Sent from the HttpClient-User mailing list archive at Nabble.com.

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

View raw message