如何仅使用Web视图发送http post请求

时间:2018-05-12 23:04:09

标签: android api webview http-post retrofit

我想使用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");

1 个答案:

答案 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在弃用时会抛出警告。 非常感谢任何更好的解决方案。