我想使用webview发出http发布请求。
我正在尝试使用登录凭据将post requset发送到api服务器,并将响应页面加载到Web视图并从那里继续使用Web应用程序。
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (!Common.connectionAvailable(WebActivity.this)) {
Toast.makeText(getApplicationContext(),"Check Internet",Toast.LENGTH_LONG).show();
finish();
}
pd = new ProgressDialog(WebActivity.this,
R.style.AppTheme_Dark_Dialog);
pd.setMessage("Loading APP");
pd.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (pd != null) {
pd.dismiss();
}
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
finish();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
}
);
wv.loadUrl("http://myapp/api/login");
答案 0 :(得分:0)
WebView对象实际上有一种使用post方法发布数据的方法
String user_id = "USERID";
String user_password = "USER_PASSWORD";
String postData = "username="+user_id+"&password="+user_password;
webView.postUrl("http://localhost/api/login", EncodingUtils.getBytes(postData, "BASE64"));
此方法经过测试,发现在oreo中工作,但是,EncodingUtils在弃用时会抛出警告。 非常感谢任何更好的解决方案。