使用Jsoup的Android登录网站

时间:2016-05-04 02:59:28

标签: android jsoup

当我转到this URL并获取urlLogin时。 之后,我正在尝试登录urlLogin。

Document doc = Jsoup.connect("https://www.cgv.vn/vn/theaters/showtimes/").get();

            Element element = doc.getElementById("top_register");

            //Get url login
            String urlLogin = element.childNode(0).attr("href");

            Connection.Response loginForm = Jsoup.connect(urlLogin)
                    .method(Connection.Method.GET)
                    .execute();

            Document document = Jsoup.connect(urlLogin)
                    .data("login[username]", "ABC")
                    .data("login[password]", "ABC")
                    .data("cookieexists", "false")
                    .data("form_key", "WrToMuENMoOq8ZA3")
                    .data("form_key_test", "WrToMuENMoOq8ZA3")
                    .data("send", "")
                    .cookies(loginForm.cookies())
                    .post();

            //a page you want to load after login
            String url = "https://www.cgv.vn/vn/customer/account/";

            Document fpl = Jsoup.connect(url)
                    .timeout(5000)
                    .cookies(loginForm.cookies())
                    .get();
           String body = fpl.body().toString();

            Log.e("test", body);

不幸的是,这只是在未登录状态下返回同一页面。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以查看以下几点:

1)手动登录

尝试使用您喜欢的浏览器手动登录,并使用开发工具栏或Fiddler等工具监视其交换。完成后,使用Jsoup在代码中重现相同的交换。

2)表单字段form_keyform_key_test

确保服务器不会随机生成这些字段。您可能需要从文档中提取它们的值,而不是硬编码它们各自的值。

见下面两行:

.data("form_key", "WrToMuENMoOq8ZA3") // randomly generated ?
.data("form_key_test", "WrToMuENMoOq8ZA3") // randomly generated ?

3)缺少cookie

您是否检查过以下语句是否产生了以后提取https://www.cgv.vn/vn/customer/account/所需的新Cookie。

Document document = Jsoup.connect(urlLogin)
                .data("login[username]", "ABC")
                .data("login[password]", "ABC")
                .data("cookieexists", "false")
                .data("form_key", "WrToMuENMoOq8ZA3")
                .data("form_key_test", "WrToMuENMoOq8ZA3")
                .data("send", "")
                .cookies(loginForm.cookies())
                .post();