hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ben Perkins (JIRA)" <j...@apache.org>
Subject [jira] Reopened: (HTTPCLIENT-862) Extend the client's redirect handling interface to allow control of the content of the redirect
Date Fri, 04 Dec 2009 21:39:20 GMT

     [ https://issues.apache.org/jira/browse/HTTPCLIENT-862?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Ben Perkins reopened HTTPCLIENT-862:


I finally got a chance to test the new RedirectStrategy interface.  It does give me the flexibility
I need, but there's an implementation issue relating to entity enclosing methods like PUT
and POST.

In DefaultRequestDirector.handleResponse (currently line 1008), the code does this:

            RequestWrapper wrapper = new RequestWrapper(redirect);

But in HttpRequestExecutor.doSendRequest (currently line 213), the code has this check:

        if (request instanceof HttpEntityEnclosingRequest) {

Because a RequestWrapper is not an HttpEntityEnclosingRequest, we'll never enter this on a
redirect.  And if we don't enter this, we'll never emit the entity body.  This means that
even though I can use the new interfaces to cause the client to follow a POST redirect with
a POST, I can't get the payload to be sent when the redirect is followed.  

It appears that if handleResponse created an EntityEnclosingRequestWrapper when the redirect
object is a PUT or POST, it would solve this problem.


Thanks again.

> Extend the client's redirect handling interface to allow control of the content of the
> -----------------------------------------------------------------------------------------------
>                 Key: HTTPCLIENT-862
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-862
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpClient
>    Affects Versions: 4.0 Beta 2
>            Reporter: Ben Perkins
>             Fix For: 4.1 Alpha1
> The existing RedirectHandler interface provides the ability influence which situations
cause redirects, but gives you no control over the content of the redirect itself.  For example,
if you want the client follow the redirect of a POST request with a POST request to the new
location, you can't do it.  DefaultRequestDirector decides what method will be used on the
redirect request and as of the most recent patch, it's always either a HEAD or a GET.
> One option for resolving this might be extending the RedirectHandler interface to be
a factory for creating the redirect request object.  The the DefaultRequestDirector could
then be changed to ask the RedirectHandler to create the appropriate request for the situation.
> Thanks,
> Ben

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