簡體   English   中英

當我嘗試使用 Jsoup 在我的 class 中獲取多個文檔時,為什么會出現 handshake_failure 錯誤?

[英]Why do I get a handshake_failure error when I try to get more than 1 Document in my class using Jsoup?

似乎我只能為每個 class 創建一個使用 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.SSLHandshakeException: Received fatal alert: handshake_failure at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128) at java.base/sun.security.ssl.Alert.createSSLException(Alert .java:117) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308) at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279) at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:181) at java.base/sun.security.ZF 9D5C16A7F42203F8C195432354A3271Z.SSLTransport.decode(SSLTransport.java:164) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl. java:1063) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)在 java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Z93F725A07423FE1C889 F448B33D21F46Z:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:163) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:732) at org .jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:707) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:297) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:286 ) at DublinCityParksParse.getParkNames1(DublinCityParksParse.java:68) at DublinCityParksParse.(DublinCityParksParse.java:30) at DublinCityParksParse.main(DublinCityParksParse.java:182)

我敢打賭,您在 IntelliJ 和 Eclipse 之間運行不同的 Java 版本,並且 Eclipse 版本是舊的(如 1.7 或舊版本) 這就是為什么它在第一個 IDE 而不是第二個中起作用的原因。

您應該將 JDK 更新到當前支持的版本 那些舊版本的 Java 在當前的 TLS / SSL 網站上存在問題。 他們缺少許多密碼套件、SNI 支持、TLS 1.3 支持等。您可以為舊版本修補所有這些,但我無法想象這是您想要做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM