用于android <= 4.3的WebView中的TLS 1.1,1.2

在我的android应用程序中,我需要在WebView显示第三方注册表单。 不幸的是,我还需要支持Android版本<4.3,当您连接到网站时,您会遇到SSL握手错误。 然而,我可以在Android 4.1+上创建直接请求,并使用自定义SSL上下文,该上下文已经明确启用了TLS 1.1,但是我无法将此上下文传递到我的WebView 。 我试图制作自定义的WebViewClient

    private WebViewClient webViewClient = new WebViewClient() {
    @Override
    public void onPageFinished(WebView webView, String url) {
        if (presenter != null) {
            presenter.onLoadFinished();
        }
    }

    @Override
    public void onReceivedError(WebView webView,
                                WebResourceRequest request,
                                WebResourceError error) {
        if (presenter != null) {
            presenter.onLoadError();
        }
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
        handler.proceed();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
                Request request = new Request.Builder().url(url).build();
    final Handler handler = new Handler(mContext.getMainLooper());
    //mOkHttpClient is an OkHttpClient with my custom SSLContext which has TLS 1.1 and TLS 1.2 enabled
    mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, final okhttp3.Response response) throws IOException {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            webView.loadDataWithBaseURL(
                                    null, response.body().string(), "text/html", "utf-8", null);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        });
    }

};

但是这不起作用,因为在POST请求上不会调用shouldOverrideUrlLoading

有没有办法使这项工作(可能是一些替代WebView )? 任何帮助表示赞赏。


我不确定您是否可以使用当前的WebView,但我建议您查看:https://crosswalk-project.org/documentation/android.html以替换WebView。

这是基于最新版本的Chrome构建的,您不会遇到用户正在运行的Android版本问题。

我相信也有其他的选择,但这是我用来工作的一个,我知道工作。

祝你好运。

链接地址: http://www.djcxy.com/p/91577.html

上一篇: TLS 1.1, 1.2 in WebView for android <= 4.3

下一篇: Android Cannot anchor FAB button to BottomSheet