hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: Last redirect URL
Date Tue, 22 Sep 2009 13:34:55 GMT
On 22/09/2009, Oleg Kalnichevski <olegk@apache.org> wrote:
> On Tue, Sep 22, 2009 at 02:04:38PM +0100, sebb wrote:
>  > On 22/09/2009, Oleg Kalnichevski <olegk@apache.org> wrote:
>  > > On Tue, Sep 22, 2009 at 01:10:38PM +0100, sebb wrote:
>  > >  > On 22/09/2009, Oleg Kalnichevski <olegk@apache.org> wrote:
>  > >  > > On Mon, Sep 21, 2009 at 05:14:05PM -0700, Ken Krugler wrote:
>  > >  > >  >
>  > >  > >  > On Sep 21, 2009, at 2:30pm, droidin.net wrote:
>  > >  > >  >
>  > >  > >  >>
>  > >  > >  >> I have rather simple HttpClient 4 code that calls HttpGet
to get HTML
>  > >  > >  >> output.
>  > >  > >  >> The HTML returns with scripts and image locations all
set to local
>  > >  > >  >> (e.g.
>  > >  > >  >> /images/foo.jpg ) so I need calling URL to make these
into absolute (
>  > >  > >  >> http://foo.com/images/foo.jpg  Now comes the problem
- during the call
>  > >  > >  >> there
>  > >  > >  >> may be one or two 302 redirects so the original URL is
no longer
>  > >  > >  >> reflects
>  > >  > >  >> the location of HTML. How do I get the latest URL of
the returned
>  > >  > >  >> content
>  > >  > >  >> given all the redirects I may (or may not) have?
>  > >  > >  >>
>  > >  > >  >> I looked at HttpGet#getAllHeaders() and HttpResponse#getAllHeaders()
-
>  > >  > >  >> couldn't find anything.
>  > >  > >  >
>  > >  > >  > From past posts on the list, I thought httpMethod.getURI()
would return
>  > >  > >  > the final URL.
>  > >  > >  >
>  > >  > >  > -- Ken
>  > >  > >  >
>  > >  > >  >
>  > >  > >
>  > >  > >
>  > >  > > Ken,
>  > >  > >
>  > >  > >  This is only partially correct. The original request object remains
unmodified.
>  > >  >
>  > >  > This is a change from 3.1; perhaps needs a note in the Javadoc to say
>  > >  > it is not affected by redirects.
>  > >  >
>  > >
>  > >
>  > > Sure. The question is where to put it.
>  > >
>  >
>  > I was thinking of the Javadoc for getURI() in the interface
>  > HttpUriRequest which is inherited by the implementing class(es).
>  >
>
>
> Which would be wrong in my opinion since this behavior is not defined by the
>  interface but rather is implementation specific. So, DefaultRequestDirector
>  would be a more appropriate place but not the most obvious one.

I've already updated getURI() - best treat that as a temporary experiment ...

If that text is OK, it can be moved elsewhere, but given that the
httpMethod#getURI() Javadoc leads back to HttpUriRequest, I think that
there needs to be a pointer from there as well.

Does getURI() behaviour vary between implementations?
If so, this should definitely be mentioned in the interface Javadoc.

Or is it just that the implementations may handle redirect URIs differently?

>
>  So, I am leaning more towards adding a paragraph on HTTP request immutability
>  to the tutorial, if it is not there already.
>
>  Oleg
>
>
>
>  > >
>  > >  > >  So, one needs to retrieve the internal HttpUriRequest and HttpHost
objects from
>  > >  > >  the execution context in order to find out the final request URI
/ target host.
>  > >  > >  For details see:
>  > >  > >
>  > >  > >  http://hc.apache.org/httpcomponents-client/tutorial/html/fundamentals.html#d4e205
>  > >  >
>  > >  > Note that the text talks about 'http.target_host' but the code uses:
>  > >  >
>  > >  > ExecutionContext.HTTP_TARGET_HOST
>  > >  >
>  > >  > which is presumably a constant for the value. I think this is confusing.
>  > >  >
>  > >  > I assume the HC4 code actually uses constants throughout, so would IMO
>  > >  > the document should do so too.
>  > >  >
>  > >  > Any objections to updating the documentation accordingly?
>  > >  >
>  > >
>  > >
>  > > Certainly no objection from me, as long as the change is applied consistently
>  > >  across the entire tutorial.
>  >
>  > OK, I'll have a look at what is involved.
>  >
>  > Are you OK with dropping the constant values from the docs?
>  >
>  > >  Oleg
>  > >
>  > >
>  > >  > I would prefer not to document the constant values (available via
>  > >  > Javadoc anyway), i.e. I propose to change:
>  > >  >
>  > >  > * 'http.target_host':   HttpHost instance representing the connection
target.
>  > >  >
>  > >  > to
>  > >  >
>  > >  > * ExecutionContext.HTTP_TARGET_HOST:   HttpHost instance representing
>  > >  > the connection target.
>  > >  >
>  > >  > However, I suppose one could write:
>  > >  >
>  > >  > * ExecutionContext.HTTP_TARGET_HOST ('http.target_host'):   HttpHost
>  > >  > instance representing the connection target.
>  > >  >
>  > >
>  > > > ---------------------------------------------------------------------
>  > >  > To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
>  > >  > For additional commands, e-mail: dev-help@hc.apache.org
>  > >  >
>  > >
>  > >  ---------------------------------------------------------------------
>  > >  To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
>  > >  For additional commands, e-mail: dev-help@hc.apache.org
>  > >
>  > >
>  >
>  > ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
>  > For additional commands, e-mail: dev-help@hc.apache.org
>  >
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
>  For additional commands, e-mail: dev-help@hc.apache.org
>
>

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


Mime
View raw message