我在這裏發佈,因爲我在我的智慧結束。我使用Jsoup發佈用於登錄的HTML數據。奇怪的是,我可以在表單中輸入數據,按登錄,並從網站獲得迴應。但是,即使使用正確的登錄憑據,該網站也告訴我,我無法登錄。我有幾個想法,爲什麼這是這樣的:發佈一個JSOUP文檔登錄到網站
1)HTTPS://在我試圖連接的URL之前,我讀過,有時Jsoup在驗證SSL證書時遇到了問題。
2)我知道cookies是一個問題。在登錄本網站後,當我在Chrome上使用開發人員選項時,當我打印出Connection.Response的Cookie時,就會出現一個Cookie。
3)當我嘗試登錄後使用Jsoup打印出生成的文檔時,出現了一個奇怪的「注意:您的數據沒有丟失,使用SSL安全登錄後會發佈」。我不知道這意味着什麼,顯然Google也沒有。
爲了保持安全性,我已經刪除了我要連接的實際URL,但下面的代碼仍應該具有某種意義。
String encodeUser = URLEncoder.encode(username, "UTF-8");
String encodePass = URLEncoder.encode(password, "UTF-8");
Connection.Response loginForm = Jsoup.connect("https://----")
.method(Method.GET)
.userAgent("Mozilla/5.0")
.execute();
Log.v("Miles", String.valueOf(loginForm.cookies()));
Document homeDoc = Jsoup.connect("--------")
.cookie("T3Version", loginForm.cookie("T3Version"))
.data("_name", encodeUser, "_pass", encodePass, "_login", "in")
.referrer("https://web.wm.edu/studenthappenings/preview.php")
.userAgent("Mozilla/5.0")
.method(Connection.Method.POST)
.timeout(1000)
.post();
Log.v("Miles", String.valueOf(loginForm.cookies()));
System.out.println(homeDoc.body());
if (homeDoc.body().html().contains("Cannot perform login")){
Log.v("Miles", "Cannot perform login");
}
它總是進入,如果循環和打印日誌。
幫助?我會很樂意提供更多信息,因爲在爲我的愚蠢問題設計解決方案時可能需要它。