使用Android通过HTTPs发布请求
我有个大问题。我必须将应用程序中的一些参数发布到URL。 但是,当我尝试在WebView对象中执行此操作时,它会向我抛出一个异常,该异常显示为“Untrusted Certicate”(该异常由WebViewClient onReceivedSlerror()重写中的方法抛出)。我如何才能与服务器正确握手?你能给我一些提示吗?我快疯了 真的,真的谢谢你 编辑:这就是我定义webview的方式使用Android通过HTTPs发布请求,android,post,ssl,https,Android,Post,Ssl,Https,我有个大问题。我必须将应用程序中的一些参数发布到URL。 但是,当我尝试在WebView对象中执行此操作时,它会向我抛出一个异常,该异常显示为“Untrusted Certicate”(该异常由WebViewClient onReceivedSlerror()重写中的方法抛出)。我如何才能与服务器正确握手?你能给我一些提示吗?我快疯了 真的,真的谢谢你 编辑:这就是我定义webview的方式 webView = (WebView) myFragmentView.findViewById(R.id
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很好,但我知道存在安全漏洞。但这意味着与服务器的通信没有加密??通信是加密的,但服务器的身份验证没有保证。它容易受到中间人攻击。攻击者可以向您发送他自己签署的证书,您会很高兴地接受它。是的,完美。你太棒了。你能告诉我怎样检查证书吗?