Hello,I've to submit post form with username,password and 2 hidden 
parameters.It seems to be logged in, but then redirection fails: import 
java.io.IOException;import org.apache.commons.httpclient.*;import 
org.apache.commons.httpclient.cookie.CookiePolicy;import 
org.apache.commons.httpclient.cookie.CookieSpec;import 
org.apache.commons.httpclient.methods.*; public class FormLogin{    static 
final String LOGON_SITE = "www.website.org";    static final int    LOGON_PORT 
= 80;    public FormLogin() {        super();    }    public static void 
main(String[] args) throws Exception {        HttpClient client = new 
HttpClient();        client.getHostConfiguration().setHost(LOGON_SITE, 
LOGON_PORT, "http");        
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);      // 
'developer.java.sun.com' has cookie compliance problems        // Their session 
cookie's domain attribute is in violation of the RFC2109        // We have to 
resort to using compatibility cookie policy        GetMethod authget = new 
GetMethod("/servlet/SessionServlet");        client.executeMethod(authget);     
   System.out.println("Login form get: " + authget.getStatusLine().toString()); 
        // release any connection resources used by the method        
authget.releaseConnection();        // See if we got any cookies        
CookieSpec cookiespec = CookiePolicy.getDefaultSpec();        Cookie[] 
initcookies = cookiespec.match(            LOGON_SITE, LOGON_PORT, "/", false, 
client.getState().getCookies());        System.out.println("Initial set of 
cookies:");            if (initcookies.length == 0) {            
System.out.println("None");            } else {            for (int i = 0; i < 
initcookies.length; i++) {                System.out.println("- " + 
initcookies[i].toString());                }        }                PostMethod 
authpost = new PostMethod("/");        // Prepare login parameters        
NameValuePair action   = new NameValuePair("submit", "entra!");        
NameValuePair url      = new NameValuePair("statuslg", "ok");        
NameValuePair userid   = new NameValuePair("usr", "user");        NameValuePair 
password = new NameValuePair("pwd", "password");        
authpost.setRequestBody(           new NameValuePair[] {action, url, userid, 
password});                client.executeMethod(authpost);        
System.out.println("Login form post: " + authpost.getStatusLine().toString());  
       // release any connection resources used by the method        
authpost.releaseConnection();        // See if we got any cookies        // The 
only way of telling whether logon succeeded is         // by finding a session 
cookie        Cookie[] logoncookies = cookiespec.match(            LOGON_SITE, 
LOGON_PORT, "/", false, client.getState().getCookies());        
System.out.println("Logon cookies:");            if (logoncookies.length == 0) 
{            System.out.println("None");            } else {            for 
(int i = 0; i < logoncookies.length; i++) {                
System.out.println("- " + logoncookies[i].toString());                }        
}        // Usually a successful form-based login results in a redicrect to     
    // another url        int statuscode = authpost.getStatusCode();        if 
((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) ||            (statuscode == 
HttpStatus.SC_MOVED_PERMANENTLY) ||            (statuscode == 
HttpStatus.SC_SEE_OTHER) ||            (statuscode == 
HttpStatus.SC_TEMPORARY_REDIRECT)) {         
//authpost.setFollowRedirects(true);            Header header = 
authpost.getResponseHeader("location");            if (header != null) {        
        String newuri = header.getValue();                if ((newuri == null) 
|| (newuri.equals(""))) {                    newuri = "/";                }     
                          System.out.println("Redirect target: " + newuri);     
            GetMethod redirect = new GetMethod(newuri);                
redirect.setRequestHeader("Cookie",logoncookies.toString());                
client.executeMethod(redirect);                  byte[] responseBody = 
redirect.getResponseBody();               System.out.println("Redirect: " + 
redirect.getStatusLine().toString());                
System.out.println("Redirect: " + redirect.getRequestHeader("path"));           
                      // release any connection resources used by the method    
            redirect.releaseConnection();            } else {                
System.out.println("Invalid redirect");                System.exit(1);          
  }        }    } I obtain code 302 for login page, 
andauthpost.getResponseHeader("location")=/default.php (that's correct)but 
redirection doesn't work and variable responseBody  contains html code from 
login page (index.php)Any idea, please?
_________________________________________________________________
Scarica GRATIS 30 emoticon per Messenger!
http://www.emoticons-livemessenger.com/pages/msnit/index.htm

Reply via email to