2012-02-10 97 views
0

因此,我使用此代码登录到发布的网站... 及其无法使用。实际上,它不返回状态,只是一个200和登录站点。 ???使用HttpClient进行网站登录

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.UsernamePasswordCredentials; 
import org.apache.commons.httpclient.auth.AuthScope; 
import org.apache.commons.httpclient.methods.GetMethod; 
import org.apache.commons.httpclient.methods.PostMethod; 
import org.apache.commons.httpclient.params.HttpMethodParams; 

public class GetCookiePrintAndSetValue { 

    public GetCookiePrintAndSetValue() { 
     super(); 
    } 

    public static void main(String[] args) throws Exception { 
     HttpClient client = new HttpClient(); 
     client.getParams().setParameter(
        HttpMethodParams.USER_AGENT, 
        "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2" 
      ); 
     client.getState().setCredentials(
      new AuthScope("https://gs.bcp.pinnacle,org", 443, "ANY_REALM"), 
      new UsernamePasswordCredentials("214416", "PassWord") 
     ); 
     PostMethod get = new PostMethod("https://gs.bcp.org/Pinnacle/piv/logon.aspx"); 
     get.setDoAuthentication(true); 
     try { 
      int status = client.executeMethod(get); 
      System.out.println(status + "\n" + get.getResponseBodyAsString()); 
     } finally { 
      get.releaseConnection(); 
     } 
    } 
} 
+0

但是200是状态:[Http状态代码](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)。 200 beeing OK – TPete 2012-02-10 08:10:17

回答

1

我猜authscope应在相同的主机请求上进行: 哦!和领域应该是恒定AuthScope.ANY_REALM:

client.getState().setCredentials(
     new AuthScope("gs.bcp.org", 443, AuthScope.ANY_REALM), 
     new UsernamePasswordCredentials("214416", "PassWord") 
    ); 

但也许该网站不允许基本身份验证。

+0

...不幸的是,它没有奏效 – 2012-02-11 01:48:52