我有一个android应用程序,它由WebWiew
组成,我需要使用代码自动登录到网站。我试过使用postUrl()
,它似乎工作...但只在一些网站。如何发送POST数据与android webview中的代码
下面是我使用的代码:
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"));
}
}
这适用于dropbox.com 很大,但其他网站如google.com,facebook.com等只需加载登录页面或放弃一个错误(google.com给出错误说我需要启用cookie)。
现在我只是用手去发布数据;查看网站的登录表单,并在我的代码中将postData中的名称/值字段。在像谷歌这样的网站上,登录表单有许多隐藏字段,我也一直在将它们添加到postData中。
如果有人能给我任何我做错的事情的想法,请让我知道,我对此很困惑。
an00b嗨。感谢你的回答!我相信我已经尝试过,但没有运气。我不再处理这个具体问题,我决定另辟蹊径。无论如何,我会投你一票,因为我真的很感谢答案。 – javajavajavajavajava
“BASE64”没有字符集,所以这可能工作(取决于postData),但它可能会失败。正确的方法是将postData编码为“application/x-www-form-urlencoded”编码,这可以通过URLEncoder.encode(postData,“UTF-8”)完成。 – raudi
raudi你可以用一个代码段使用“应用程序/ x-www-form-urlencoded” – D4rWiNS