我搜索的时间很长,但我没有得到任何对我的问题有用的东西。 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?