it-swarm.com.de

Wie abzufangen POST Daten in einem Android-Webview

Ich habe eine Android-App, die aus einem Webview besteht. Es muss Benutzern ermöglichen, ein Formular auf einer Webseite auszufüllen und dann die Daten des Formulars zu ändern, nachdem der Benutzer im Formular auf submit geklickt hat. Das Formular verwendet die Anforderungsmethode POST. 

Meine Frage ist also wie kann ich die POST -Daten des Formulars abfangen, die Werte ändern und sie dann mitschicken?

Zum Beispiel: Wenn es ein Webformular wie dieses gibt ...

<form action="http://www.example.com/do.php" method="post">
    <input type="text" name="name" />
    <input type="text" name="email" />
    <input type="submit" />
</form>

Wenn der Benutzer name = Steve und email = [email protected] in das Formular eingibt, möchte ich die Werte in name = bob und email = [email protected] in der Android-App ändern und das neue POST erhalten. an http://www.example.com/do.php gesendet werden.

Danke für Ihre Hilfe!

25

Wenn Sie mit JavaScript vertraut sind, würde ich vorschlagen, dass Sie JavaScript verwenden. Ich finde es bequemer und einfacher. Diese Tour zeigt Ihnen, wie Sie JavaScript in einem WebView verwenden.

3
Jay

wenn Sie das Formular mit der Methode postUrl () senden, können Sie die Methode postUrl in Ihrem WebView-Objekt wie folgt überschreiben.

 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);
2
Sathesh

Ich habe eine Bibliothek mit einem speziellen WebViewClient geschrieben, die eine geänderte shouldOverrideUrlLoading bietet, in der Sie auf die Postdaten zugreifen können.

https://github.com/KonstantinSchubert/request_data_webviewclient

Leider funktioniert meine Implementierung nur für XMLHttpRequest (AJAX) -Anfragen. Aber jemand anderes hat bereits verfasst, wie dies für Formulardaten geschehen würde: https://github.com/KeejOow/Android-post-webview

Zwischen den beiden Repositories sollten Sie Ihre Antwort finden können :)

1