当我尝试使用Jsoup在类中获取多个文档时,为什么会出现握手失败错误



似乎每个类只能用Jsoup创建一个get请求,因为当我用CITYPARKSURL换成CITYPARKSURL2时,我放在getParkNames()中的那个会编译,另一个会出错。

我在IntelliJ中运行了这段代码,但当我把它移到Eclipse中时,它开始给我这些握手错误。有人知道为什么会这样吗?(不幸的是,我不得不在Eclipse中完成我的项目。(

这是我的代码和错误:

public class DublinCityParksParse{
private final String CITYPARKSURL = "https://www.dublincity.ie/residential/parks/dublin-city-parks/visit-park";
private final String CITYPARKSURL1 = "https://www.dublincity.ie/residential/parks/dublin-city-parks/visit-park?page=1";
private final String CITYPARKSURL2 = "https://www.dublincity.ie/residential/parks/dublin-city-parks/visit-park?page=2";
private final String CITYPARKSURL3 = "https://www.dublincity.ie/residential/parks/dublin-city-parks/visit-park?page=3";
private String[] parkNamesHyphs = {"/eamonn-ceannt-park", "/balcurris"};
private List<String> parkNames = new ArrayList<String>();
private ArrayList<String> parkNamesHyphen = new ArrayList<String>();
private List<Park> parks = new ArrayList<Park>();
public DublinCityParksParse() {
getParkNames();
getParkNames1();
}

public void getParkNames() {        
try {       
Document docGetDetails = Jsoup.connect(CITYPARKSURL).get();

Elements elsClass = docGetDetails.getElementsByClass("search-result__title");
for(Element els : elsClass) {               
parkNames.add(els.text());
}

// System.out.println(docGetDetails.toString());
System.out.println(parkNames.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();        
}
}
public void getParkNames1() {
try {       
Document docGetDetails1 = Jsoup.connect(CITYPARKSURL1).get();

Elements elsClass1 = docGetDetails1.getElementsByClass("search-result__title");
for(Element els : elsClass1) {              
parkNames.add(els.text());
}

System.out.println(docGetDetails1.toString());
System.out.println(parkNames.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}

public static void main(String[]args) {     
new DublinCityParksParse();
}} 

错误:

javax.net.ssl.ssl握手异常:收到致命警报:握手失败java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128(java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117(java.base/sun.security.ssl.TransportContext.thall(TransportContext.java:308(在java.base/sun.security.ssl.Alert$AlertConsumer.customer(Alert.java:279(在java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181(在java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164(在java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152(在java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1063(在java.base/sun.security.ssl.SLSocketImpl.startHandshake(SSLSocketImpl.java:402(在java.base/sun.net。www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567(在java.base/sun.net。www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractdeleteHttpsURLConnection.java:185(在java.base/sun.net www.protocol.httpsURLConnection Impl.connect(HttpsURLConnection impl.java:163(在org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:732(在org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:707(在org.jsoup.helper.HttpConnection.execute(HttpConnection.java:297(org.jsoup.helper.HttpConnection.get(HttpConnection.java:286(都柏林城市公园parse.getParkNames1(都柏林城市公园Parse.java:68(都柏林城市公园公园。(DublinCityParksParse.java:30(都柏林城市公园parse.main(都柏林城市公园Parse.java:182(

我敢打赌,您在IntelliJ和Eclipse之间运行不同的Java版本,而Eclipse版本是旧的(比如1.7或旧的1.8(。这就是为什么它在第一个IDE中有效,而在第二个IDE中无效。

您应该将JDK更新到当前支持的版本。那些旧版本的Java在当前的TLS/SSL网站上遇到了问题。它们缺少许多密码套件、SNI支持、TLS 1.3支持等。你可以为旧版本修补所有这些,但我无法想象这是你想要做的。

相关内容

最新更新