我搜索了很长时间,但没有发现任何对我的问题真正有用的信息。 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中所述的上下文日志记录很容易找到这种情况。