这个主要是没有ssl证书的问题。
package book;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import javax.net.ssl.*;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
//http证书问题
public class Test2 {
public static void main(String[] args) throws Exception{
//设置url
String url = "https://ssr2.scrape.center/page/1";
Test2 t = new Test2();
System.out.println(t.parseJsoup(url));
}
public String parseJsoup(String url) throws IOException {
//第一种方法不验证ssl证书
//Document document = Jsoup.connect(url).validateTLSCertificates(false).get();
//第二种方法创建自己的证书
initUnSecureTSL();
Document document = Jsoup.connect(url).get();
return document.html();
}
//初始化信任管理器,不验证证书
private static void initUnSecureTSL() {
// 创建信任管理器(不验证证书)
final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
//检查客户端证书
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
//do nothing 接受任意客户端证书
}
//检查服务器端证书
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
//do nothing 接受任意服务端证书
}
//返回受信任的X509证书
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];//或者return null;
}
}};
try {
// 创建SSLContext对象,并使用指定的信任管理器初始化
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
基于信任管理器,创建套接字工厂 (ssl socket factory)
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
//给HttpsURLConnection配置SSLSocketFactory
HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
} catch (Exception e) {
e.printStackTrace();
}
}
}