HttpURLConnection 忽略 https 证书
时间: 2023-10-29 11:13:26 浏览: 140
在使用 HttpURLConnection 发送 https 请求时,如果目标服务器使用了自签名证书或是其他非受信任的证书,会导致请求失败并抛出 javax.net.ssl.SSLHandshakeException 异常。为了忽略这些证书,可以通过以下方式实现:
1. 创建 SSLContext 对象,并使用 TrustManager 来加载证书:
```
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
}}, new SecureRandom());
```
其中,X509TrustManager 是一个接口,可以根据自己的需求来实现。
2. 将创建好的 SSLContext 对象设置给 HttpsURLConnection:
```
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
```
这样,就可以忽略 https 证书进行请求了。但需要注意的是,忽略证书存在一定的安全风险,建议在开发和测试阶段使用,正式环境中不应该采用此方式。