-1

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

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);

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

4

2 回答 2

0

该错误意味着无法建立服务器证书的有效性。这可能有多种原因,例如,受信任的根证书不可用。

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

于 2013-01-03T16:51:27.670 回答
0

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

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

于 2013-01-03T16:54:35.407 回答