Java的Apache HttpClient的一些Cookies丢失

我search了很长时间,对于我的问题我没有得到任何有用的信息。 我用这个作为指导 ,向下滚动到:“3. Apache HttpClient – 自动login谷歌”。

当您使用Chrome浏览器时,您可以查找当前页面使用的Cookie。 login后浏览网站的其他页面,这些Cookies远远超过了HttpClient在login和浏览其他页面后得到的。 Chrome浏览器只显示十一个中的两个。 这些Cookies是页面所必需的,因为我收到的HTML只包含您在未login时获得的预览。
一些丢失的Cookie被称为“userauth_name”,“member_id”等。 我认为他们是必要的login,对不对? :P。

我从指南中改变的唯一的东西是:
– 当然是login的URL和其他页面加载
– 在sendPost:
主机:post.setHeader(“主机”,“accounts.google.com”);
Referer:post.setHeader(“Referer”,“ https://accounts.google.com/ServiceLoginAuth ”);
– 在getFormParams
在我的testing页面的表单标签没有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请求以获取login表单。 (我得到responecode = 200)
2.使用jsoup htmlparsing器来抓取表单input。
3.构造参数并发出POST请求进行身份validation。 (responecode = 200)
4.发送另一个GET请求到Gmail。 (responecode = 200)

这是没有服务器错误或Java错误。

问题再次出现:为什么有一些Cookie丢失?

有些Cookie可能因违反实际的Cookie管理政策而被拒绝。 通常,通过打开本指南中描述的上下文日志记录,可以很容易地找到这种情况 。