【问题标题】:Cannot load .jsp webpages in android webview无法在 android webview 中加载 .jsp 网页
【发布时间】:2018-04-11 18:05:53
【问题描述】:

我尝试使用 android webview 加载 .jsp 网页,但 webview 打开时显示空白页。在 chrome 浏览器应用程序中成功加载了相同的网页。我尝试使用 www.google.co.in 加载相同的 webview 并工作。这是我的代码。

 WebView webView = (WebView) view.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            webViewProgressBar.setVisibility(View.VISIBLE);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webViewProgressBar.setVisibility(View.GONE);
        }


    });
webView.loadUrl(url);

提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    这是由于 ssl 异常而发生的。为了根据新的安全政策正确处理 SSL 证书验证并避免 Google 拒绝应用程序,请更改您的代码以在服务器提供的证书符合您的期望时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。

    例如,

    @Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        String message = "SSL Certificate error.";
            switch (error.getPrimaryError()) {
                case SslError.SSL_UNTRUSTED:
                    message = "The certificate authority is not trusted.";
                    break;
                case SslError.SSL_EXPIRED:
                    message = "The certificate has expired.";
                    break;
                case SslError.SSL_IDMISMATCH:
                    message = "The certificate Hostname mismatch.";
                    break;
                case SslError.SSL_NOTYETVALID:
                    message = "The certificate is not yet valid.";
                    break;
            }
            message += " Do you want to continue anyway?";
    
            builder.setTitle("SSL Certificate Error");
            builder.setMessage(message);
        builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                handler.proceed();
            }
        });
        builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                handler.cancel();
            }
        });
        final AlertDialog dialog = builder.create();
        dialog.show();
    }
    

    更改后不会显示警告。

    【讨论】:

    • 谢谢,这个解决方案拯救了我的一天。我想知道您是如何得出 SSL 错误的?我拼命尝试记录可能的错误。
    • @Sreehari Radhakrishnan 小心。这个解决方案 is all over the place. 例如here 使用此方法的应用程序或更新将在 Google Play 中被拒绝。见this post
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2013-02-02
    • 2014-03-18
    相关资源
    最近更新 更多