Как отправить данные POST с кодом в android webview
у меня есть приложение для Android, которое состоит из WebWiew
и мне нужно войти на сайт автоматически с помощью кода. Я пробовал использовать postUrl()
и это, кажется, работает... но только на некоторых сайтах.
вот код, который я использую:
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 = "login_email=myEmail@gmail.com&login_password=myPassword";
webview.postUrl("https://www.dropbox.com/login", EncodingUtils.getBytes(postData, "utf-8"));
}
}
Это Работает большой для dropbox.com, но и другие сайты, такие как google.com, facebook.com и т. д. просто загрузите страницу входа в систему или дайте ошибку (google.com выдает ошибку, говоря, что мне нужно включить cookies).
право теперь я просто отправляю данные post вручную; глядя на форму входа для сайта и помещая поля name/value в postData в моем коде. На таких сайтах, как google, форма входа в систему имеет много скрытых полей, и я также добавляю их в postData.
Если кто-нибудь может дать мне представление о том, что я делаю неправильно, пожалуйста, дайте мне знать, я довольно смущен об этом.
3 ответов
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
String url = "http://example.com/somepage.php";
String postData = "postvar=value&postvar2=value2";
webView.postUrl(url, EncodingUtils.getBytes(postData, "base64"));
}
WebView myWebView = (WebView) findViewById(R.id.webview);
String url="http://www.example.org/login";
String postData=
"username="+URLEncoder.encode("abc","UTF8")+
"&password="+URLEncoder.encode("***", "UTF-8");
myWebView.postUrl(url,postData.getBytes());