我搜索了很长时间,但没有发现任何对我的问题真正有用的信息。 I used this as a guide,向下滚动至:“ 3. Apache HttpClient –自动登录Google”。

使用Chrome时,您可以查找当前页面所使用的Cookies。
登录并浏览网站的其他页面后,这些Cookies远远超过HttpClient登录并浏览到其他页面后获得的cookie。
Chrome浏览器显示的HttpClient中只有11个中的2个。
页面需要这些Cookie,因为我收到的HTML仅包含未登录时得到的预览。一些丢失的Cookies称为“ userauth_name”,“ member_id”等。我认为登录是必须的,对吗? :P。

我从指南代码更改的唯一内容是:
-当然是用于登录的URL和要加载的其他页面
-在sendPost中:
主机:post.setHeader(“ Host”,“ 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)

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


  再次提出问题:为什么缺少一些Cookie?

最佳答案

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

07-27 14:41