web-dev-qa-db-fra.com

Comment intercepter POST données dans une vue Web Android

J'ai une application Android qui consiste en une vue Web. Il doit permettre aux utilisateurs de remplir un formulaire sur une page Web, puis de modifier les données du formulaire après que l'utilisateur a cliqué sur submit sur le formulaire. Le formulaire utilisera la méthode de requête POST. 

Ma question est donc la suivante: comment puis-je intercepter les données POST du formulaire, modifier ses valeurs, puis les envoyer?

Par exemple: s'il existe un formulaire Web comme celui-ci ...

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

Si l'utilisateur entre name = Steve et email = [email protected] dans le formulaire, je souhaite modifier les valeurs suivantes: name = bob et email = [email protected] dans l'application Android et que le nouveau POST être envoyé à http://www.example.com/do.php.

Merci de votre aide!

25

Si vous connaissez JavaScript, je vous conseillerais de l'utiliser. Je pense que c'est plus pratique et facile. This tour vous explique comment utiliser JavaScript dans une WebView.

3
Jay

si vous soumettez le formulaire à l'aide de la méthode postUrl (), vous pouvez remplacer la méthode postUrl dans votre objet WebView de la manière suivante.

 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

J'ai écrit une bibliothèque avec un WebViewClient spécial qui offre une variable shouldOverrideUrlLoading permettant d'accéder aux données de publication.

https://github.com/KonstantinSchubert/request_data_webviewclient

Malheureusement, mon implémentation ne fonctionne que pour les requêtes XMLHttpRequest (AJAX). Mais quelqu'un d'autre a déjà expliqué comment cela serait fait pour les données de formulaire: https://github.com/KeejOow/Android-post-webview

Entre les deux référentiels, vous devriez pouvoir trouver votre réponse :)

1
Konstantin Schubert