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

Ben Perkins reopened HTTPCLIENT-862:
------------------------------------


Oleg,

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);
            wrapper.setParams(params);

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.

Thoughts?

Thanks again.
Ben

> Extend the client's redirect handling interface to allow control of the 
> content of the redirect
> -----------------------------------------------------------------------------------------------
>
>                 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to