45 votes

Android Webview POST

Je suis en train d'accomplir quelque chose de très simple, mais je n'ai trouvé aucune bonne documentation sur ce sujet. J'ai une webView, et j'ai besoin de charger une page qui nécessite des données POST. Semble être un processus simple, mais je ne peux pas trouver un moyen d'afficher le résultat dans une webView.

Le processus doit être simple:

requête(avec des données POST) -> serveur -> réponse HTML -> WebView.

Je peux envoyer des données à l'aide d'un DefaultHttpClient, mais cela ne peut pas être affiché dans une WebView.

Toutes les suggestions?

Merci Beaucoup

Solution

private static final String URL_STRING = "http://www.yoursite.com/postreceiver";

    public void postData() throws IOException, ClientProtocolException {  

         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
         nameValuePairs.add(new BasicNameValuePair("foo", "12345"));  
         nameValuePairs.add(new BasicNameValuePair("bar", "23456"));

         HttpClient httpclient = new DefaultHttpClient();  
         HttpPost httppost = new HttpPost(URL_STRING);  
         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

         HttpResponse response = httpclient.execute(httppost);  
         String data = new BasicResponseHandler().handleResponse(response);
         mWebView.loadData(data, "text/html", "utf-8");
    }

145voto

tarkeshwar Points 2057

Deux façons de charger de la réponse post dans webview:

  1. webview.loadData(): À l'instar de ce que vous avez publié dans votre solution. Mais "le contenu chargé par le biais de ce mécanisme n'a pas la possibilité de charger du contenu depuis le réseau".

  2. webview.postUrl(): Utilisez cette option si la réponse post pour charger du contenu depuis le réseau. (NOTE: uniquement accessible à partir de l'api de niveau 5, ce qui signifie pas de android 1.6 ou plus bas)

String postData = "username=my_username&password=my_password";
webview.postUrl(url,EncodingUtils.getBytes(postData, "BASE64"));

(source: http://www.anddev.org/other-coding-problems-f5/webview-posturl-postdata-t14239.html)

16voto

TJF Points 287

Essayez ceci:

Je vous recommande de le faire dans le cadre d'un AsyncTask et la mise à jour de la WebView par la suite

2voto

LatinSuD Points 1157

Si vous utilisez une WebView dès le début pourrait-il fonctionner?

Une Webview avec un html/js qui fait le POST, et affiche naturellement le résultat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X