奇怪的问题: SSLException: Unrecognized SSL message, plaintext connection?

逛l站的时候发现一个天气api,就想着调用一下…
天气信息查询API - 资源荟萃 - LINUX DO
代码如下:
这个SSLContext 去掉也会报这个错

        SSLContext sslContext = SSLContextBuilder.create().setTrustManagers(DefaultTrustManager.INSTANCE).build();

        String res = HttpRequest.get("https://api.lolimi.cn/API/weather/?city=%E6%88%90%E9%83%BD")
                .setSSLSocketFactory(sslContext.getSocketFactory())
                .execute()
                .body();

堆栈信息:

Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
	at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
	at sun.security.ssl.InputRecord.read(InputRecord.java:527)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:961)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
	at cn.hutool.http.HttpConnection.connect(HttpConnection.java:384)
	at cn.hutool.http.HttpRequest.send(HttpRequest.java:1346)

问题是我浏览器能正常打开网站,curl也可以…

2 Likes

换了个jdk好了…

JDK 版本太旧,,这个站用的证书的根证书比较新,jdk 没有包含。

1 Like