使用 Bittrex HTTP API 的 Java“握手期间远程主机关闭连接”

发出 HTTP 请求时,我突然收到这些错误:


Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)

at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)

at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:290)

at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:259)

at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:125)

at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:319)

at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)

at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)

at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)

at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)


它并不总是这样做,它工作了一段时间。然后我使用不同的库甚至不同的 IntelliJ 项目进行测试,仍然是相同的问题。我尝试过的事情:


更改我正在使用的端点

将 TLS 版本设置为 TLSv1.2(正如我在发出浏览器请求时发现的那样)

我可以使用浏览器和 Postman 很好地加载端点。我的代码(使用 Unirest 库):


System.setProperty("https.protocols", "TLSv1.2");

System.out.println(Unirest.get("https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc-ltc").asString().getBody());

我不知道是什么导致了这个问题,这非常令人沮丧。任何帮助,将不胜感激。


编辑:更新到 JDK10 解决了这个问题。查看所选答案及其评论线程以获取更多信息。


翻翻过去那场雪
浏览 338回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java