【问题标题】:Apache HttpClient not receiving all cookies?Apache HttpClient 没有收到所有的 cookie?
【发布时间】:2011-05-17 02:21:14
【问题描述】:

我之前发布过,但现在我似乎确实看到了问题,只是无法解决它。

我正在尝试登录我的学校成绩网站,甚至可能稍后为它制作一个应用程序,当我使用 Chrome 检查正在创建的 cookie 时,我得到了所有这些,

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

但是当我的程序打印它收到的所有 cookie 时,我只得到这个

  • [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 客户端是否重要。

【问题讨论】:

    标签: java apache http client


    【解决方案1】:

    这些 cookie 必须在您登录后设置,而不是之前设置。查看上面 URL 的 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。

    【讨论】:

    • 谢谢 :) 这就是我的想法,所以我在您发布之前大约一个小时修复了它,但无论如何还是谢谢。现在我有一个新问题,页面使用 JavaScript 将所有内容打印出来,我仍然可以获得输出吗?如果需要,我会发布一个新问题。
    • 啊,为此您可能会遇到一些困难:您可能想查看 AJAX 调用页面的内容,然后模拟这些内容以获取内容,但就布局正确而言很乱。有几个 Java 浏览器模拟器库(我认为 Selenium 允许您在 Java 代码中使用他们的浏览器模拟器),因此您可能需要走这条路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多