使用Android通过HTTPs发布请求

使用Android通过HTTPs发布请求,android,post,ssl,https,Android,Post,Ssl,Https,我有个大问题。我必须将应用程序中的一些参数发布到URL。 但是,当我尝试在WebView对象中执行此操作时,它会向我抛出一个异常,该异常显示为“Untrusted Certicate”(该异常由WebViewClient onReceivedSlerror()重写中的方法抛出)。我如何才能与服务器正确握手?你能给我一些提示吗?我快疯了 真的,真的谢谢你 编辑:这就是我定义webview的方式 webView = (WebView) myFragmentView.findViewById(R.id

我有个大问题。我必须将应用程序中的一些参数发布到URL。 但是,当我尝试在WebView对象中执行此操作时,它会向我抛出一个异常,该异常显示为“Untrusted Certicate”(该异常由WebViewClient onReceivedSlerror()重写中的方法抛出)。我如何才能与服务器正确握手?你能给我一些提示吗?我快疯了

真的,真的谢谢你

编辑:这就是我定义webview的方式

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

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

如果安全性不是优先级,您可以尝试调用
处理程序。继续()
在您的
onReceivedSslError()
中,不要调用
super
方法

如果安全性是一个优先事项(而且应该是):

我自己还没有为webView尝试过这一点,但请尝试如下设置您的证书:

要获取实际证书,您可以将它们加载到浏览器中(在浏览器中打开url时接受警告),然后从浏览器中导出它们,或者可以使用openssl工具,如下所述:

请分享您已有的代码并指出问题所在,我已经编辑了我的帖子,为您提供了更多信息。你还需要别的吗?:)非常感谢…当您在浏览器中查看URL时,是否收到不受信任的证书警告?是的,我已尝试加载到浏览器中,并显示不受信任的证书警告!如果我要接受它,那么我就能够看到页面…不需要调用super Works很好,但我知道存在安全漏洞。但这意味着与服务器的通信没有加密??通信是加密的,但服务器的身份验证没有保证。它容易受到中间人攻击。攻击者可以向您发送他自己签署的证书,您会很高兴地接受它。是的,完美。你太棒了。你能告诉我怎样检查证书吗?