我正在尝试在成功登录后访问网站但我收到错误。我发现我没有从Connection.Response
Connection.Response loginForm = Jsoup.connect(LOGIN_URL)
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0")
.method(Connection.Method.GET)
.timeout(3000)
.execute();
System.out.println(loginForm.cookies());
Document login = Jsoup.connect(LOGIN_URL)
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0")
.data("email", email)
.data("password", password)
.cookies(loginForm.cookies())
.timeout(3000)
.post();
登录文档返回正确的网站,以便登录成功。
我使用Google Chrome开发工具(Google Chrome network screenshot)分析了该过程。这就是我发现Connection.Response
和Document
的LOGIN_URL相同的地方。我也很确定表单只需要电子邮件和密码而没有其他隐藏的输入(虽然不能给你链接)。我还可以发现在登录后创建了一个cookie(会话ID)。
System.out.println(loginForm.cookies());
不返回任何内容({}
),因此我无法使用loginForm.cookies()
进一步使用。如果有办法从POST获取cookie,那将是最佳选择。
有没有办法获取会话ID cookie或其他一些方法来解决我的问题?
谢谢
答案 0 :(得分:0)
最后我找到了解决方案:
您可以使用Connection.Method.POST
一步一步完成。所以响应是POST的响应
Connection.Response loginForm = Jsoup.connect(LOGIN_URL)
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0")
.method(Connection.Method.POST)
.timeout(3000)
.data("email", email)
.data("password", password)
.execute();
System.out.println(loginForm.cookies());