You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "Ballard, Margaret" <Ma...@planethome.com> on 2003/03/20 15:50:06 UTC
[httpclient] Problem with Post Redirect
Hi,
I posted this last week, and haven't received a reply. Trying it again
with
a more indicative Subject line.
My problem is that I'm getting a status 405 "method not allowed" status
even
though the method I'm sending is a get method, and get is listed by the
response as an allowed method.
How I get to this point: I am going through a proxy using ssl. I post
login
information and then, after a successful login, am redirected to a new
page.
I know that followRedirects is disabled for post, so I find out where
I'm
being redirected to, and redirect myself by making a getmethod to the
redirect
url. Result is what I listed above; a 405 "Method not allowed" Status
code.
Again, am I missing a step? Is there another way to handle a post
redirect?
Code:
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy("ourproxy", 8080);
HttpState state = new HttpState();
state.setProxyCredentials("realm",new
UsernamePasswordCredentials("proxyname","proxypassword"));
client.setState(state);
String _uri = "
https://secure.planethome.de/myplanet/login.jsp";
GetMethod method = new GetMethod(_uri);
int status = client.executeMethod(method);
PostMethod postmethod = new PostMethod(_uri);
// Add Request Body
NameValuePair[] params = new NameValuePair[4];
params[0] = new NameValuePair("hidden", "yes");
params[1] = new NameValuePair("username", "username");
params[2] = new NameValuePair("password", "password");
params[3] = new NameValuePair("request", "login");
postmethod.setRequestBody(params);
// Execute Post
status = client.executeMethod(postmethod);
// Returns a Status Code 100, so I resubmit
postmethod.recycle();
status = client.executeMethod(postmethod);
// This time, it returns a Status Code 302 Redirect,
// so I find where it's redirecting to, and send a Get
Header location = postmethod.getResponseHeader("Location");
String redirect = location.getValue();
GetMethod redirectmethod = new GetMethod(redirect);
// Here's my problem - it returns a 405 Method not allowed
// code. But Get is listed as an Allowed Method in the Response
Header
status = client.executeMethod(new GetMethod(redirect));
}
Any help greatly appreciated!!
Margaret Ballard