当我转到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);
不幸的是,这只是在未登录状态下返回同一页面。我做错了什么?
答案 0 :(得分:1)
您可以查看以下几点:
尝试使用您喜欢的浏览器手动登录,并使用开发工具栏或Fiddler等工具监视其交换。完成后,使用Jsoup在代码中重现相同的交换。
form_key
和form_key_test
确保服务器不会随机生成这些字段。您可能需要从文档中提取它们的值,而不是硬编码它们各自的值。
见下面两行:
.data("form_key", "WrToMuENMoOq8ZA3") // randomly generated ?
.data("form_key_test", "WrToMuENMoOq8ZA3") // randomly generated ?
您是否检查过以下语句是否产生了以后提取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();