[
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]