0

我有一个大问题。我必须将我的应用程序中的一些参数发布到 URL。但是,当我尝试在 WebView 对象中执行此操作时,它会给我一个异常,上面写着“不受信任的证书”(该异常是由覆盖 WebViewClient onReceivedSslError() 的方法引发的)。我怎样才能与服务器正确握手?你能给我一些建议吗?我快疯了...

真的,真的,谢谢...

编辑:这就是我定义我的网络视图的方式

webView = (WebView) myFragmentView.findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String string){
            Log.debug(tag, "URL pagina terminata :"+webView.getUrl() );
            if(progress!=null) 
                if(progress.isShowing()){progress.dismiss();}
        }

        @Override
        public void onReceivedError(WebView view, 
                int errorCode,
                String description, 
                String failingUrl) {
            Log.error(tag, "ERROR:" + description );
           }

        @Override
        public void onReceivedSslError(WebView view,
                SslErrorHandler handler, SslError error) {
            super.onReceivedSslError(view, handler, error);
            Log.error(tag, "SSL Error received: "+ error.getPrimaryError());

            handler.proceed();
        }


    });

这就是我在 WebView 中创建 postRequest 的方式

webView.postUrl(url, EncodingUtils.getBytes(postParameters, "base64"));

这是 LogCat 输出:

SSL Error received: 3 - Untrusted Certificate

现在,谷歌搜索了一下,我发现需要检查证书的有效性并将钥匙串导入本地密钥库。但问题是我 0 不知道从哪里开始...... :)

4

1 回答 1

1

如果安全不是优先事项,您可以尝试调用handler.proceed()您的onReceivedSslError(),不要调用该super方法。

如果安全是优先事项(应该是):

我自己没有为 webView 尝试过这个,但是尝试像这样设置你的证书: Android WebView setCertificate issues SSL questions

要获取实际证书,您可以将它们加载到浏览器中(通过在浏览器中打开 url 时接受警告)并从那里导出它们,或者您可以使用如下所述的 openssl 工具: http://blog。 crazybob.org/2010/02/android-trusting-ssl-certificates.html

于 2013-02-16T12:58:12.733 回答