获取使用jsoup登录网站后创建的会话ID cookie

时间:2017-03-15 23:10:05

标签: java android post jsoup html-form

我正在尝试在成功登录后访问网站但我收到错误。我发现我没有从Connection.Response

获取cookie
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.ResponseDocument的LOGIN_URL相同的地方。我也很确定表单只需要电子邮件和密码而没有其他隐藏的输入(虽然不能给你链接)。我还可以发现在登录后创建了一个cookie(会话ID)。

System.out.println(loginForm.cookies());不返回任何内容({}),因此我无法使用loginForm.cookies()进一步使用。如果有办法从POST获取cookie,那将是最佳选择。

有没有办法获取会话ID cookie或其他一些方法来解决我的问题?

谢谢

1 个答案:

答案 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());