简体   繁体   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?

It seems as if I can only create one get request with Jsoup per class because, when I swap out CITYPARKSURL for CITYPARKSURL2 , the one that I put in getParkNames() compiles and the other gives the error.似乎我只能为每个 class 创建一个使用 Jsoup 的 get 请求,因为当我将CITYPARKSURL CITYPARKSURL2时,我放入getParkNames()的那个会编译,而另一个会给出错误。

I had this code running in IntelliJ but, when I moved it into Eclipse, it started giving me these handshake errors.我在 IntelliJ 中运行了这段代码,但是当我将它移到 Eclipse 中时,它开始给我这些握手错误。 Does anyone know why this is?有人知道为什么吗? (I have to do my project in Eclipse unfortunately.) (不幸的是,我必须在 Eclipse 中完成我的项目。)

Here is my code and the error:这是我的代码和错误:

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();
}} 

Error:错误:

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 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) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.Z93F725A07423FE1C889 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) 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)

My bet is that you are running different Java versions between IntelliJ and Eclipse, and the Eclipse version is old (like 1.7 or an old 1.8).我敢打赌,您在 IntelliJ 和 Eclipse 之间运行不同的 Java 版本,并且 Eclipse 版本是旧的(如 1.7 或旧版本) And that's why it worked in the first IDE and not the second.这就是为什么它在第一个 IDE 而不是第二个中起作用的原因。

You should update your JDK to a currently supported version .您应该将 JDK 更新到当前支持的版本 Those old versions of Java have troubles with current TLS / SSL websites.那些旧版本的 Java 在当前的 TLS / SSL 网站上存在问题。 They re missing many cipher suites, SNI support, TLS 1.3 support, etc. You can patch all that in for old versions, but I can't imagine that's something you want to do.他们缺少许多密码套件、SNI 支持、TLS 1.3 支持等。您可以为旧版本修补所有这些,但我无法想象这是您想要做的事情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我的Java SSL证书出现handhake_failure? - Why am I getting handshake_failure with Java SSL cert? 为什么我会出现握手失败(Java SSL) - Why do I get a handshake failure (Java SSL) 我尝试执行POST时与Java握手失败 - Handshake failure with Java when I try to do a POST 如果尝试在视图类中将值放入映射中,为什么会出现错误? - Why do I get an error if I try to put values into a map in my view class? 使用 jersey 客户端通过 HTTPS 调用 api 时出现错误 handshake_failure。 我已经关闭了服务器证书有效性检查 - I am getting the error handshake_failure when using jersey client to call api with HTTPS. I have turned off the server certificate validity check 当我尝试保存测试计划时,为什么会出现 NoClassDefFound 错误? - Why do I get a NoClassDefFound error when I try to save my test plan? 当我尝试使用我的jsf自定义标记时,为什么会出现错误“前缀[..]未定义”? - Why do I get error “prefix [..] is not defined” when I try to use my jsf custom tag? 我在程序中调用 https URL 时遇到了 handshake_failure - I am getting handshake_failure while calling https URL in my program 为什么会出现编译错误? 使用 try and catch - Why do I get compile error? using try and catch RestTemplate GET Request 中的 handshake_failure 在浏览器中工作 - handshake_failure in RestTemplate GET Request which works in browser
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM