2011-05-17 74 views
0

我发布之前,但现在我似乎真的看到了问题,只是无法修复它。Apache HttpClient没有收到所有的cookies?

我试图登录到我小学三年级的网站,甚至使应用程序为它以后,当我使用Chrome检查所创建的饼干,我得到这一切,

Cookie:appName=chippewa_falls; tool=""; selection=""; districtID=1; endYear=2011; calendarID=0; permCalendarID=0; JSESSIONID=BE5AEF51EAA72975150FC2D0F77DDE13 

但是,当我的程序将打印所有收到的饼干,我只得到这个

  • [version: 0][name: JSESSIONID][value: BC1BAA33BEB23DC27B7883AC24934A1D][domain: campus.chipfalls.k12.wi.us][path: /campus][expiry: null]

这里是我的代码,

public static void main(String[] args) throws Exception { 


    DefaultHttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet("https://campus.chipfalls.k12.wi.us/campus/portal/chippewa_falls.jsp"); 
    httpget.addHeader("Referer", "http://cfsd.chipfalls.k12.wi.us//high/"); 
    HttpResponse response = httpclient.execute(httpget); 
    HttpEntity entity = response.getEntity(); 

    System.out.println("Login form get: " + response.getStatusLine()); 
    if (entity != null) { 
     InputStream input = entity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
     String ln = ""; 
     while((ln = reader.readLine()) != null) { 
      System.out.println("During Get - " + ln); 
     } 
    } 
    System.out.println("Initial set of cookies:"); 
    List<Cookie> cookies = httpclient.getCookieStore().getCookies(); 

    if (cookies.isEmpty()) { 
     System.out.println("None"); 
    } else { 
     for (int i = 0; i < cookies.size(); i++) { 
      System.out.println("- " + cookies.get(i).toString()); 
     } 
    } 

注意,仅仅是它的GET部分,

感谢所有帮助:)

编辑:我没有忘记提及,它使用HTTPS,但说实话,我不知道这与apache客户端是否有关系。

回答

0

这些cookies必须在您登录后才能设置,而不是之前。寻找与你有网址的wget输出上面,你看到这一点:

Resolving campus.chipfalls.k12.wi.us... 205.213.253.11 
Connecting to campus.chipfalls.k12.wi.us|205.213.253.11|:443... connected. 
WARNING: Certificate verification error for campus.chipfalls.k12.wi.us: self signed certificate in certificate chain 
HTTP request sent, awaiting response... 
    HTTP/1.1 200 OK 
    Server: Apache-Coyote/1.1 
    Set-Cookie: JSESSIONID=004549BDBCBDFB8289EBF859A4E743B2; Path=/campus; Secure 
    Content-Type: text/html;charset=utf-8 
    Content-Length: 6352 
    Date: Tue, 17 May 2011 06:00:38 GMT 
    Connection: keep-alive 
Length: 6,352 (6.2K) [text/html] 

这是你看到同样的事情。在您实际登录之前,您不会看到其他Cookie。

+0

谢谢:)这就是我在想什么,所以我在发布之前大约一个小时就修好了它,不过谢谢。现在我遇到了一个新问题,页面使用JavaScript将所有内容打印出来,无论如何我仍然可以获得输出结果吗?如果必须,我会发布一个新问题。 – Austin 2011-05-18 13:38:09

+0

嗯,为此你可能会遇到一些困难:你可能想看看AJAX调用页面所做的事情,然后模拟这些内容,但是只要让布局正确完成,那很麻烦。有几个Java浏览器模拟器库(我认为Selenium可以让你在Java代码中使用他们的浏览器模拟器),所以你可能需要走这条路线。 – Femi 2011-05-18 13:41:17