Java Apache HttpClient缺少一些Cookie

时间:2013-08-27 17:02:46

标签: java apache cookies session-cookies apache-httpclient-4.x

我搜索的时间很长,但我没有得到任何对我的问题有用的东西。 I used this as a guide,向下滚动到:“3。Apache HttpClient - 自动登录Google”。

使用Chrome时,您可以查找用于当前页面的Cookie。 登录并浏览网站的其他页面后,这些Cookie远远超过HttpClient在登录和浏览其他页面后获得的内容。 HttpClient只能获得Chrome中显示的11个中的两个。 页面需要这些Cookie,因为我收到的HTML只包含您未登录时获得的预览。
一些缺少的Cookie称为“userauth_name”,“member_id”等。我认为登录是必要的,对吧? :P

我从指南代码中改变的唯一内容是:
- 当然是登录的URL和要加载的其他页面 - 在 sendPost:
主持人:post.setHeader(“主持人”,“accounts.google.com”);
Referer:post.setHeader(“Referer”,“https://accounts.google.com/ServiceLoginAuth”);
- 在 getFormParams 中 在我的测试页面上,表单标签没有id属性,所以我做了这个:

    Elements forms = doc.getElementsByTag("form");
    Element loginform = null;
    for (Element inputElement : forms) {
        if (inputElement.attr("name").equals("authform"))
            loginform = inputElement;
    }
    Elements inputElements = loginform.getElementsByTag("input");

    List<NameValuePair> paramList = new ArrayList<NameValuePair>();

    for (Element inputElement : inputElements) {
        String key = inputElement.attr("name");
        String value = inputElement.attr("value");

        if (key.equals("username"))
            value = username;
        else if (key.equals("password"))
            value = password;

        paramList.add(new BasicNameValuePair(key, value));          

    }

在指南的标题之后,代码中有基本步骤:
1.发送GET请求以获取登录表单。 (我得到responecode = 200)
2.使用jsoup html解析器来获取表单输入 3.构造参数并发出POST请求进行身份验证。 (responecode = 200)
4.向Gmail发送另一个GET请求。 (responecode = 200)

Ther没有服务器错误或java错误。

  

同样问题:为什么缺少某些Cookie?

1 个答案:

答案 0 :(得分:1)

某些Cookie可能会因违反实际的Cookie管理政策而被拒绝。通常,通过打开this guide中所述的上下文记录,很容易找到这种情况。