AndroidアプリはWebビューで構成されています。ユーザーがWebページのフォームに入力し、ユーザーがsubmit
on the form。フォームはPOSTリクエストメソッドを使用します。
だから私の質問はPOSTフォームからのデータをインターセプトし、値を変更して、一緒に送信するにはどうすればよいですか?
例:このようなWebフォームがある場合...
<form action="http://www.example.com/do.php" method="post">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="submit" />
</form>
ユーザーがフォームにname = Steveとemail = [email protected]を入力した場合、Android appの値をname = bobおよびemail = [email protected]に変更します。新しいPOSTをhttp://www.example.com/do.php
に送信します。
ご協力いただきありがとうございます!
JavaScriptに精通している場合は、JavaScriptの使用をお勧めします。もっと便利で簡単だと思います。 これ ツアーでは、WebViewでJavaScriptを使用する方法を説明しています。
投稿データにアクセスできるように変更されたshouldOverrideUrlLoading
を提供する特別なWebViewClientを使用してライブラリを作成しました。
https://github.com/KonstantinSchubert/request_data_webviewclient
残念ながら、私の実装はXMLHttpRequest(AJAX)リクエストに対してのみ機能します。しかし、他の誰かがすでにフォームデータに対してこれを行う方法をドラフトしました: https://github.com/KeejOow/Android-post-webview
2つのリポジトリの間で、答えを見つけることができるはずです:)
postUrl()メソッドを使用してフォームを送信する場合は、次のようにWebViewオブジェクトのpostUrlメソッドをオーバーライドできます。
WebView mWebView = new WebView(this){
@Override
public void postUrl(String url, byte[] postData)
{
System.out.println("postUrl can modified here:" +url);
super.postUrl(url, postData);
}};
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
linearLayout.addView(mWebView);