2

我搜索了很长时间,但没有得到任何对我的问题真正有用的东西。我以此为指导,向下滚动到:“3. Apache HttpClient – 自动登录 Google”。

当您使用 Chrome 时,您可以查找用于当前页面的 Cookie。登录并浏览网站的其他页面后,这些Cookies比HttpClient登录并浏览其他页面后得到的要多得多。HttpClient 仅获得 Chrome 中显示的十一个中的两个。页面需要这些 Cookie,因为我收到的 HTML 仅包含您未登录时获得的预览。
一些缺少的 Cookie 称为“userauth_name”、“member_id”等。我认为它们是登录所必需的,对吧?:P。

我从指南代码中更改的唯一内容是:
- 当然是用于登录的 URL 和要加载的其他页面
- 在sendPost 中:
主机:post.setHeader("Host", "accounts.google.com");
推荐人: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 请求以获取登录表单。(我得到 responcode= 200)
2. 使用 jsoup html 解析器来获取表单输入。
3.构造参数并发出POST请求进行认证。(responcode= 200)
4. 向 Gmail 发送另一个 GET 请求。(响应码= 200)

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

又是一个问题:为什么缺少一些 Cookie?

4

1 回答 1

1

某些 cookie 可能会因违反实际 cookie 管理政策而被拒绝。通常情况下是否是这种情况很容易通过打开本指南中描述的上下文日志来查明。

于 2013-08-28T12:24:47.893 回答