我正在编写一个测试webview应用程序,我打算在启动应用程序视图时打开我的雅虎邮件。它将是一个webview,我想在其中硬编码我的用户名和密码。我知道雅虎使用get方法而不是post。有没有办法实现这个目标? 到目前为止,这是我的代码:
Webview webview = (WebView) getView().findViewById(R.id.mywebview);
webview.setBackgroundColor(0);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new webClient());
String url = "https://www.yahoomail.com";
webview.loadUrl(url);
private class webClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
final Animation fade = new AlphaAnimation(0.0f, 1.0f);
fade.setDuration(200);
view.startAnimation(fade);
view.setVisibility(View.VISIBLE);
}
public void animate(final WebView view) {
final Animation anim = AnimationUtils.loadAnimation(getActivity(),
R.anim.slide_in_from_left);
view.startAnimation(anim);
}
@Override
public void onReceivedError( WebView view, int errorCode, String description, String failingUrl ) {
Toast.makeText(view.getContext(), "Authentication Error", Toast.LENGTH_LONG).show();
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setCookie("yahooemail@yahoo.com", "yahoopass");
super.onReceivedError(view, errorCode, description, failingUrl);
}
@Override
public void onLoadResource( WebView view, String url ){
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedHttpAuthRequest( WebView view, final HttpAuthHandler handler, final String host, final String realm ){
handler.proceed("yahooemail@yahoo.com", "yahoopass");
}
}
答案 0 :(得分:0)
http://developer.android.com/reference/android/webkit/WebView.html
loadUrl(String url)
加载给定的URL。postUrl(String url,byte [] postData)
使用" POST"使用postData加载URL进入这个WebView的方法。
所以不要使用:
String url = "https://www.yahoomail.com";
webview.loadUrl(url);
使用:
String url = "http://example.com/somepage.php";
String postData = "postvar=value&postvar2=value2";
webView.postUrl(url, EncodingUtils.getBytes(postData, "base64"));
您可以从登录页面中提取Yahoo所需的变种。