2) 表单字段
当我找到这个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) 手动登录
尝试使用您喜欢的浏览器手动登录,并使用开发工具工具栏或Fiddler等工具监视其交换。完成后,使用Jsoup在代码中重现相同的交换。
2) 表单字段form_key
和form_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();