Android Webview POST

J'essaie d'accomplir quelque chose de très simple, mais je n'ai trouvé aucune bonne documentation à ce sujet. J'ai un webView, et je dois charger une page qui nécessite des données POST. On dirait un processus simple, mais je ne peux pas trouver un moyen d'afficher le résultat dans un webView.

Le processus devrait être simple:

  • Appels vidéo Android utilisant la gorgée d'Android
  • La navigation par clavier avec Android GridView ne défile pas la grille
  • LinearLayout minHeight ne fonctionne pas avec le poids = "1"
  • Java comparator, comment trier par nombre entier?
  • Android: Les octets SALT aléatoires passés à AESObfuscator doivent-ils rester identiques?
  • Catching OutOfMemoryError dans le décodage Bitmap
  • Requête (avec les données POST) -> serveur web -> réponse HTML -> WebView.

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

    Aucune suggestion?

    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"); } 

  • Renommer un fichier dans le stockage interne
  • Utilisez les classes générées par JAXB (xjc) dans Android
  • Qu'est-ce que RemoteControlClient dans Android 4.0?
  • Traiter les wi-fi inactifs
  • Récupérer le fichier Xml supprimé de l'application sur Android
  • Sqlite: on dirait que moveToNext fonctionne sans moveToFirst nécessaire
  • 4 Solutions collect form web for “Android Webview POST”

    Essaye ça:

     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); } 

    Je recommande de faire ceci dans le cadre d'un AsyncTask et de mettre à jour ultérieurement le WebView

    Deux façons de charger la réponse post sur le Web:

    1. webview.loadData() : Comme ce que vous avez posté dans votre solution. Mais «le contenu chargé par ce mécanisme n'a pas la capacité de charger du contenu du réseau».

    2. webview.postUrl() : utilisez ceci si la réponse post doit charger le contenu du réseau. (REMARQUE: accessible uniquement par api-level 5, ce qui signifie qu'aucun Android 1.6 ou inférieur)


     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 )

    J'utilise webView.loadData () pour faire une publication client, et affichera le contenu de url, mon code:

     public static void webview_ClientPost(WebView webView, String url, Collection< Map.Entry<String, String>> postData){ StringBuilder sb = new StringBuilder(); sb.append("<html><head></head>"); sb.append("<body onload='form1.submit()'>"); sb.append(String.format("<form id='form1' action='%s' method='%s'>", url, "post")); for (Map.Entry<String, String> item : postData) { sb.append(String.format("<input name='%s' type='hidden' value='%s' />", item.getKey(), item.getValue())); } sb.append("</form></body></html>"); webView.loadData(sb.toString(), "text/html", "UTF-8"); } 

    Utilisez la fonction webview_ClientPost ():

     Map<String, String> mapParams = new HashMap<String, String>(); mapParams.put("param1", "111"); mapParams.put("param2", "222"); Collection<Map.Entry<String, String>> postData = mapParams.entrySet(); webview_ClientPost(webView1, "http://www.yoursite.com/postreceiver", postData); 

    Si vous utilisez un WebView dès le début, cela pourrait-il fonctionner?

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

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.