调用https 跳过ssl证书验证 Java
时间: 2023-08-04 07:39:12 浏览: 174
在 Java 中,可以通过设置 SSLContext 来实现跳过 SSL 证书验证。具体代码如下:
```java
import javax.net.ssl.*;
import java.security.cert.X509Certificate;
import java.security.SecureRandom;
public class HttpsClient {
public static void main(String[] args) throws Exception {
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {}
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
public X509Certificate[] getAcceptedIssuers() {return null;}
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
// 创建 URL 对象
URL url = new URL("https://example.com");
// 打开连接
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
// 跳过证书验证
conn.setHostnameVerifier((hostname, session) -> true);
// 发送请求...
}
}
```
上述代码中,我们创建了一个 SSLContext,并将其初始化为不进行任何验证。然后,我们将其设置为默认的 SSL socket 工厂,即 `HttpsURLConnection.setDefaultSSLSocketFactory`。接下来,我们通过设置 hostname verifier 来跳过证书验证。需要注意的是,这样做同样可能会导致安全问题,因此应该谨慎使用。
阅读全文