You can also have a look at
https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/client/LaxRedirectStrategy.java
available starting with 4.2.

On 29 September 2011 08:20, Ken Krugler <[email protected]> wrote:
> This is a topic that comes up repeatedly on the list.
>
> From Ryan Smith's response to the same question about a year ago:
>
>> Redirecting POSTs breaks RFC standards.  You need to extend and implement
>> your own RedirectHandler/RedirectStrategy and tell HttpClient to use it
>> instead of the default one.
>
> I see that section 5.3 in the tutorial already says "HttpClient handles all 
> types of redirects automatically, except those explicitly prohibited by the 
> HTTP specification as requiring user intervention". Though I don't know what 
> the next bit of text on the tutorial is trying to say: "See Other (status 
> code 303) redirects on POST and PUT requests..."
>
> There's some code at Stack Overflow (first hit on 
> http://lmgtfy.com/?q=httpclient+4+doesn%27t+redirect+post) that might be 
> useful.
>
> http://stackoverflow.com/questions/3658721/httpclient-4-error-302-how-to-redirect
>
> -- Ken
>
> On Sep 28, 2011, at 8:54pm, Jeff wrote:
>
>> Being new to the v4.x HttpClient (and rusty with older versions...ack), this
>> may be something obvious that I've just missed.
>>
>> The tutorial (section 5.3) states that HttpClient handles most redirect
>> automatically.  I have the following set:
>>
>>
>> httpclient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS,
>> true);
>>
>> httpclient.getParams().setBooleanParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS,
>> true);
>>
>> I create the HttpPost for the form POST which seems to be working:
>>
>>      post = new HttpPost(baseUrl + "/userLoginManual.aspx");
>>
>>      List<NameValuePair> formparams = new ArrayList<NameValuePair>();
>>      formparams.add(new BasicNameValuePair("postlogin_path",
>> "/offers/consent.aspx"));
>>      formparams.add(new BasicNameValuePair("login", username));
>>      formparams.add(new BasicNameValuePair("password", password));
>>      UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
>> "UTF-8");
>>      post.setEntity(entity);
>>
>>      response = httpclient.execute(post, localContext);
>>
>>      code = response.getStatusLine().getStatusCode();
>>
>> But the response is "302 - Moved Temporarily".  This is part of the normal
>> process, but I would have expected HttpClient to handle it and return me a
>> 200.
>>
>> Since I really only needed the cookies returned after successful auth, I am
>> doing :
>>
>>      try {
>>        respStr = responseHandler.handleResponse(response);
>>      } catch (HttpResponseException hrex) {
>>        post.abort();
>>      }
>> in order to consume the response which is throwing the HttpResponseException
>> (due to the 302) and calling post.abort().  This works for me, but I
>> wondered why the redirect isn't happening automagically.
>>
>> Any light/knowledge/insight is much appreciated.
>>
>> --
>> Jeff Vincent
>> [email protected]
>> See my LinkedIn profile at:
>> http://www.linkedin.com/in/rjeffreyvincent
>> I ♥ DropBox <http://db.tt/9O6LfBX> !!
>
> --------------------------
> Ken Krugler
> +1 530-210-6378
> http://bixolabs.com
> custom big data solutions & training
> Hadoop, Cascading, Mahout & Solr
>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to