2014-06-29 40 views
0

我在這裏發佈,因爲我在我的智慧結束。我使用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"); 
      } 

它總是進入,如果循環和打印日誌。

幫助?我會很樂意提供更多信息,因爲在爲我的愚蠢問題設計解決方案時可能需要它。

回答

0

最終將jsoup歸爲html報廢和讀取數據的唯一目的,使用HttpClient等登錄到網站。 Jsoup很棒,但它並不令人驚歎。