2016-11-19 77 views
2

我需要從Java網頁解析HTML元素,填寫表單並提交它以模擬登錄。在Android中解析並執行HTML

我一直在做一點研究,這裏是我使用jsoup庫做的。

但是,在實現這個之後,我意識到jsoup僅用於解析並且不能執行按鈕點擊,例如。

在這個例子中,我需要點擊submitButton元素。

try { 
    Document htmlDoc = Jsoup.connect(MY_URL).get(); 
    Element loginForm = htmlDoc.getElementById("login-form"); 
    Element usernameField = loginForm.getElementById("username"); 
    Element passwordField = loginForm.getElementById("passwd"); 
    Element submitButton = loginForm.getElementById("submit"); 

    usernameField.val(username); 
    passwordField.val(password); 

    // I need to simulate `submitButton` click so I can login 

} catch (Exception e) { 
    Log.e("TAG", e.toString()); 
} 

上午我在理解是正確的jsoup不能夠這樣做的?

如果是這樣,有沒有Android的圖書​​館可以?

我知道有很多Java庫,但由於javax限制,大多數無法使用Android(例如HtmlUtil)。

+0

你想效仿瀏覽器還是隻想發表一個表單?爲什麼你需要解析表單呢?畢竟,你沒有從你提供的代碼片段中的表單中提取任何信息。 –

+0

我不需要提取任何信息。我需要做的是驗證提供的用戶名和密碼是否有效。如果我可以模擬點擊,我可以驗證提供的ID和密碼是否有效。我知道有更好的方法來做到這一點,但我需要暫時以這種方式實現它 –

+0

該方法在很大程度上取決於您想要探測的網站的性質。如果它返回一個錯誤(例如404,403,401),您可以發佈用戶名和密碼並查看響應。請參閱https://developer.android.com/reference/java/net/HttpURLConnection.html以獲取正確的方向。如果您搜索HttpURLConnection和HTTP POST,您將獲得大量有關如何將表單數據發佈到URL的教程。 –

回答

0

您可以查看此鏈接。提供良好的answer

的步驟應該是以下幾點:

  1. 獲取到登錄頁面
  2. 使用jsoup用戶名和密碼解析HTML
  3. 爲實際用戶名和密碼,
  4. 使用替換它http POST發佈用戶名和密碼錶單。
+0

看起來很有希望。我會看看。謝謝 –

+0

我試過這個例子,但是即使輸入了錯誤的證書,它也會返回一個'200'。在瀏覽器中,它返回'303',所以看起來不太合適 –

+0

我甚至嘗試使用名爲'Postman'的Chrome擴展來完成同樣的確切任務,並且返回一個'200'。我想知道用戶何時沒有輸入正確的密碼。 '303'是我正在尋找的響應,所以我可以區分成功登錄嘗試和失敗登錄嘗試 –