【问题标题】:how to send http post request using web view only如何仅使用 Web 视图发送 http post 请求
【发布时间】:2018-05-12 23:04:09
【问题描述】:

我想使用 webview 发出 http post 请求。

我正在尝试使用登录凭据将 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");

【问题讨论】:

    标签: android api webview http-post retrofit


    【解决方案1】:

    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 会抛出警告,因为它已弃用。 任何更好的解决方案都非常感谢。

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多