1. 程式人生 > >HtmlUnit報錯javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake的解決

HtmlUnit報錯javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake的解決

採用HtmlUnit爬取網站資料的時候,在爬取某個https型別的網站的時候報錯:主要提示如下: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake......Caused by: java.io.EOFException: SSL peer shut down incorrectly然而在爬取其他的https型別的網站卻沒有問題。於是網上查詢資料:原因是,我本地使用的是jdk1.7,jdk1.7預設是TSLv1, 但是可以支援TSLv1.1,TSLv1.2,jdk1.8預設是TSLv1.2。於是我本地切換jdk的版本為1.8,確實可用。但是生產環境都是1.7的,不可能更換線上的jdk的版本。
於是繼續查詢解決辦法。-Dhttps.protocols=TLSv1.1,TLSv1.2或者System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");但是仍然不起作用。以上2和3在本地測試是成功的。但是,要和HtmlUnit結合卻無處下手。於是想從HtmlUnit的API中是否能發現什麼。
//設定多個
String[] sslClientProtocols = {"TLSv1","TLSv1.1","TLSv1.2"};
webClient.getOptions().setSSLClientProtocols(sslClientProtocols );
//設定單個
webClient.getOptions().setSSLInsecureProtocol("TLSv1.2");
問題解決。