在Android中从HTTPS网址获取JSON响应时出现异常

时间:2013-01-03 16:44:25

标签: android json https

我从HTTPS获得Json响应并获得异常

javax.net.ssl.SSLException: Not trusted server certificate

下面是我的代码我是否尝试使用HttpGet或HttpPost我在行中获得异常

HttpResponse httpResponse = httpClient.execute(request);

以下是从网址获取数据的代码。

DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost request = new HttpPost(urlString);
        HttpResponse httpResponse = httpClient.execute(request);

希望得到这个问题的答案。感谢。

2 个答案:

答案 0 :(得分:0)

错误表示无法建立服务器证书的有效性。可能有几个原因,例如,受信任的根证书不可用。

您可以从浏览器连接到该页面吗?

答案 1 :(得分:0)

在为我的学校开发应用程序时遇到了类似的问题。诀窍是创建两个覆盖证书验证的类。一个扩展HostnameVerifier并在每次调用verify()时返回true,如t this。其他class extends X509TrustManager并覆盖getAcceptedIssuers(),如this

然后,您可以使用此代码将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()方法中看到我如何使用this代码。