我知道过去(很多)都曾问过这种问题,因此,我对该主题的另一个问题感到抱歉,但到目前为止,我所见的任何问题都没有帮助。我正在尝试使用JSoup登录my school gradebook(不幸的是,该成绩簿没有API)。这是我的代码:
首先,对登录页面的GET请求:
Connection.Response loginGet = Jsoup.connect("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
.method(Connection.Method.GET)
.execute();
接下来,对登录页面进行POST请求(包括登录输入,包括隐藏的输入和GET请求中的cookie):
Connection.Response login = Jsoup.connect("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
.method(Connection.Method.POST)
.cookies(loginGet.cookies())
.data("AuthType", "Student")
.data("FormType", "Login")
.data("DistrictID", "3000005")
.data("Username", "username")
.data("Password", "password")
.data("cmdLogOn", "Sign+In")
.execute();
最后,向成绩页面发送GET请求:
Document grades = Jsoup.connect("https://student.cps.k12.il.us/pc/ParentStudentGrades.aspx")
.cookies(login.cookies())
.get();
最后一个请求为我提供了登录页面,并显示了由于超时导致我如何注销的错误,我认为这可能意味着它已正常登录,但cookie立即失效。另外,当我通过Chrome登录时,有几个cookie,但是使用JSoup时,只有一个cookie(但是那个是会话ID,所以我认为很好)。关于可能出问题的任何想法/如何解决/需要更多信息?
答案 0 :(得分:0)
注意事项:
.data("cmdLogOn", "Sign+In")
您尝试使用空格而不是+
吗?.referer("https://student.cps.k12.il.us/pc/StudentLogin.aspx")
.header("Accept-Encoding", "gzip, deflate")
答案 1 :(得分:0)
我无法弄清楚,因此我移至OkHttp和PersistentCookieJar,仅使用JSoup进行解析。