web-dev-qa-db-fra.com

Comment publier des données pour WebView android

Je dois publier des données sur Webview.
J'ai trouvé à partir de certains liens le code ci-dessous:

 WebView webview = new WebView(this);
 setContentView(webview);
 String url = "http://www.example.com";
 String postData = username=my_username&password=my_password";
 webview.postUrl(url",EncodingUtils.getBytes(postData, "BASE64"));

Mais dans mon Android studio, je vois EncodingUtils comme obsolète
Quelqu'un peut-il m'aider sur l'alternative pour EncodingUtils de publier des données sur Android WebView?

15

Essayez comme ci-dessous ...

 WebView webview = new WebView(this);
 setContentView(webview);
 String url = "http://www.example.com";
 String postData = "username=" + URLEncoder.encode(my_username, "UTF-8") + "&password=" + URLEncoder.encode(my_password, "UTF-8");
 webview.postUrl(url,postData.getBytes());
38
Priyank Patel

Il s'agit d'une solution de contournement simple.

String html = "<!DOCTYPE html>" +
    "<html>" +
    "<body onload='document.frm1.submit()'>" +
    "<form action='http://www.yoursite.com/postreceiver' method='post' name='frm1'>" +
    "  <input type='hidden' name='foo' value='12345'><br>" +
    "  <input type='hidden' name='bar' value='23456'><br>" +
    "</form>" +
    "</body>" +
    "</html>";
webview.loadData(html, "text/html", "UTF-8");

Je sais que ce n'est pas la meilleure méthode mais cela fonctionne.

5
kmchmk

essayez ceci: vous devez encoder l'URL de la valeur du paramètre avant de l'envoyer.

String postData = "fileContents=" + URLEncoder.encode(fileCon, "UTF-8");
1
Rahul Khurana