commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Becke <be...@u.washington.edu>
Subject Re: [HttpClient] setFollowRedirects(true) on PostMethod
Date Wed, 27 Aug 2003 13:36:10 GMT
Hi Santos,

In the case of a redirect the server sets the response header 'location' 
to the value of the new page URI.  This can be either a relative or 
absolute URI.  You can process it using something like:

String url1 = "http://...";
PostMethod httpPostMethod = new PostMethod(url1);
httpPostMethod.addParameter("...", "...");
httpClient.executeMethod(httpPostMethod);

if (**methodWasRedirected**) {

   URI redirectLocation = new URI(
     httpPostMethod.getURI(),
     httpPostMethod.getResponseHeader("location").getValue()
   );
   httpPostMethod = new PostMethod(redirectLocation);
   httpPostMethod.addParameter("...", "...");
   httpClient.executeMethod(httpPostMethod);
}

Mike


Santos wrote:
> hi mike,
> 
> i understand you perfectly and what you said makes sense. the problem is
> that, without followRedirects set to true, the URL I got from
> httpPostMethod.getURI().toString() (httpPostMethod is an instance of
> PostMethod) is the same as the one I pass to the PostMethod constructor
> while creating httpPostMethod. In other words:
> 
> String url1 = "http://...";
> PostMethod httpPostMethod = new PostMethod(url1);
> httpPostMethod.addParameter("...", "...");
> httpClient.executeMethod(httpPostMethod);
> String url2a = httpPostMethod.getURI().toString();
> 
> url1 is equal to url2, and I need to obtain the *redirected* url2.
> 
> Any tip?
> 
> Thank you again,
> <§@nTº$ />
> 
> On Tue, 2003-08-26 at 18:49, Michael Becke wrote:
> 
>>Hi Santos,
>>
>>There's no way to make PostMethod automatically redirect, other than 
>>subclassing and overriding setFollowRedirects().
>>
>>I question if this is what you want though.  Generally a redirect on 
>>post indicates that the post succeeded and that the response is to be 
>>read from the redirected page.  So you would perform a POST to 
>>http://somehost/form and be redirected to http://somehost/response.  You 
>>would then want to do a GET on http://somehost/response.
>>
>>In either case it is also possible to handle the redirect manually by 
>>checking the response code and getting the location header.
>>
>>Mike
>>
>>Santos wrote:
>>
>>
>>>Hi all,
>>>
>>>I writing to ask you if there's any chance to setFollowRedirects(true)
>>>to an instance of PostMethod. I've read in the source that "Entity
>>>enclosing requests cannot be redirected without user intervention", but
>>>I really need a way to get around this limitation. I know that this is
>>>probably due to the HTTP POST spec itself, but I need to invoke an HTTP
>>>POST that performs redirection.
>>>
>>>Thank you,
>>><§@nTº$ />
>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>>>For additional commands, e-mail: commons-user-help@jakarta.apache.org
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: commons-user-help@jakarta.apache.org
>>
>>
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
> 


Mime
View raw message