Comment envoyer des données POST avec le code dans une webview android
J'ai une application android qui se compose d'un WebWiew
et j'ai besoin de vous connecter à un site automatiquement en utilisant le code. J'ai essayé d'utiliser postUrl()
et il semble fonctionner... mais seulement sur certains sites.
Voici le code que j'utilise:
public class webviewActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webview = new WebView(this);
setContentView(webview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient());
String postData = "[email protected]&login_password=myPassword";
webview.postUrl("https://www.dropbox.com/login", EncodingUtils.getBytes(postData, "utf-8"));
}
}
Cela Fonctionne grande pour dropbox.com mais d'autres sites comme google.com, facebook.com, etc. il suffit de charger la page de connexion ou de donner un message d'erreur (google.com donne un message d'erreur indiquant que je dois activer cookies).
Droit maintenant, je vais juste le poste de données à la main, en regardant le formulaire de connexion pour le site et de mettre le nom/valeur des champs dans le postData dans mon code. Sur des sites comme google, le formulaire de connexion a beaucoup de champs cachés et j'ai été l'ajout de ceux de la postData aussi.
Si quelqu'un pouvait me donner une idée de quelque chose que je fais mal, s'il vous plaît laissez-moi savoir, je suis assez confus à ce sujet.
- peut-on vérifier cela en Facteur ??? si oui comment faire ??
Vous devez vous connecter pour publier un commentaire.
Essayez de remplacer
"utf-8"
(dans le 2ème param) avec"BASE64"
.EncodingUtils.getBytes(postData, "base64")
que mêmepostData.getBytes()
. Utilisez simplementpostData.getBytes()
au lieu de EncodingUtils. (Si vous avez besoin de migrer vers Android M de l'API (23) sans EncodingUtils)