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