jsoup unable to find valid certification path to requested target
时间: 2023-12-15 10:32:53 浏览: 200
这个错误通常是由于JSoup无法验证目标网站的SSL证书而引起的。您可以通过以下两种方法解决此问题:
1.忽略SSL证书验证
```java
// 禁用SSL证书验证
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
} };
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
}
// 禁用主机名验证
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
// 使用JSoup连接网站
Document doc = Jsoup.connect("https://example.com").get();
```
2.手动导入SSL证书
您可以手动从目标网站下载SSL证书,并将其导入到您的Java keystore中。以下是一些步骤:
- 从浏览器中导出SSL证书
- 将证书导入到Java keystore中
- 在JSoup连接之前设置Java系统属性
```java
// 设置Java系统属性
System.setProperty("javax.net.ssl.trustStore", "/path/to/keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
// 使用JSoup连接网站
Document doc = Jsoup.connect("https://example.com").get();
```
阅读全文