2016-11-19 9 views
2

JavaのWebページから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にPOSTする方法に関するチュートリアルがたくさんあります。 –

答えて

0

このリンクを表示することができます。良いanswerを提供します。

手順は、次のようになります。

  1. は、実際のユーザー名とパスワード
  2. 使用して、それを交換して、ユーザー名とパスワードの入力をjsoup使用してHTMLを解析、ログインページ
  3. にゲットユーザー名とパスワードのフォームを投稿するためのhttp POST。
+0

有望そうです。確認してみるよ。ありがとう –

+0

私は間違った資格情報を入力してもこの例を試しましたが、それは '200'を返します。ブラウザ上では '303'が返されて何かが正しくないように見える –

+0

私は' Postman'というクロムエクステンションを使って同じ正確なタスクを試みていて、 '200'も返します。ユーザーが正しいパスワードを入力しなかったときを知りたい'303'は私が探している応答なので、成功したログインと失敗したログインの試行を区別できます –

関連する問題