在Android中从HTTPS url获取JSON响应时出现异常
我从HTTPS获得Json响应,并作为在Android中从HTTPS url获取JSON响应时出现异常,android,json,https,Android,Json,Https,我从HTTPS获得Json响应,并作为 javax.net.ssl.SSLException: Not trusted server certificate 下面是我的代码,无论我尝试使用HttpGet还是HttpPost,我都会在代码行中得到异常 HttpResponse httpResponse = httpClient.execute(request); 下面是从url获取数据的代码 DefaultHttpClient httpClient = new DefaultHttpClien
javax.net.ssl.SSLException: Not trusted server certificate
下面是我的代码,无论我尝试使用HttpGet还是HttpPost,我都会在代码行中得到异常
HttpResponse httpResponse = httpClient.execute(request);
下面是从url获取数据的代码
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(urlString);
HttpResponse httpResponse = httpClient.execute(request);
希望得到这个问题的答案。谢谢。此错误意味着无法确定服务器证书的有效性。这可能有几个原因,例如,受信任的根证书不可用
你能从浏览器连接到该页面吗?我在为学校开发应用程序时遇到类似问题。诀窍是创建两个覆盖证书验证的类。一个扩展
HostnameVerifier
,并在每次调用verify()
时返回true,如t。另一个类扩展X509TrustManager
并重写getAcceptedAssuers()
等
然后,您可以使用此代码将HttpsURLConnection设置为接受所有证书
HttpsURLConnection.setDefaultHostnameVerifier(new AllVerifier());
try
{
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { new AllTrustManager() }, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
这应该能奏效。您可以在这里的run()方法中看到我是如何使用代码的。请参阅使用DefaultHttpClientnot json响应发出https请求。没有任何痕迹。您的服务器使用设备不信任的证书,这就是错误显示的内容。