客户端 hutool: 5.7.16, openjdk version "1.8.0_111" .调用服务端的时候有异常
但是当我换一个客户端:hutool: 5.7.16, openjdk version "1.8.0_202" 并不会报错。代码完全一致
怀疑是jdk版本的问题。但是不确定。
cn.hutool.core.io.IORuntimeException: SSLException: Unrecognized SSL message, plaintext connection?
at cn.hutool.http.HttpRequest.send(HttpRequest.java:1198)
at cn.hutool.http.HttpRequest.doExecute(HttpRequest.java:1076)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:967)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:943)
at com.jmc.center.dms.util.AbstractHttpClient.postJson(AbstractHttpClient.java:117)
cn.hutool.core.io.IORuntimeException: SSLException: Unrecognized SSL message, plaintext connection?
at cn.hutool.http.HttpRequest.send(HttpRequest.java:1198)
at cn.hutool.http.HttpRequest.doExecute(HttpRequest.java:1076)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:967)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:943)
at com.jmc.center.dms.util.AbstractHttpClient.postJson(AbstractHttpClient.java:117)
cn.hutool.core.io.IORuntimeException: SSLException: Unrecognized SSL message, plaintext connection?
at cn.hutool.http.HttpRequest.send(HttpRequest.java:1198)
at cn.hutool.http.HttpRequest.doExecute(HttpRequest.java:1076)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:967)
at cn.hutool.http.HttpRequest.execute(HttpRequest.java:943)
at com.jmc.center.dms.util.AbstractHttpClient.postJson(AbstractHttpClient.java:117)
原因如下:
1.服务端部署的服务未配置SSL监听端口,也就是http访问形式,但是你用了https访问。
2.如果配置了SSL信息,但是用不了,检查下域名是否备案、nginx里是不是配置了域名证书、是否配置了SSL模式等
【以下回答由 GPT 生成】
根据您提供的信息,问题可能与Java版本相关,其中OpenJDK 1.8.0_111和OpenJDK 1.8.0_202可能会导致不同的行为。
我建议您尝试以下解决方案:
升级Java版本: 可以尝试升级到OpenJDK 1.8.0_202或更高版本,以获取更好的兼容性和安全性。升级Java版本可能需要与您的环境进行额外的测试和验证,以确保与其他组件和应用程序的兼容性。
检查证书: 确保您的HTTPS服务端配置了有效的SSL证书。如果证书无效或过期,可能会导致此错误。您可以使用Java密钥库(JKS)格式的证书,并在代码中指定信任的证书。
下面是一个示例代码片段,显示如何在Hutool中加载和使用Java密钥库(JKS)格式的证书:
SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial(ResourceUtils.getFile("classpath:keystore.jks"), "password".toCharArray(), "password".toCharArray())
.loadTrustMaterial(ResourceUtils.getFile("classpath:truststore.jks"), "password".toCharArray())
.build();
SSLFactory sslFactory = SSLFactoryBuilder.create()
.setSslContext(sslContext)
.setVerifyHostname(false) // 可根据实际情况设置是否验证主机名
.build();
HttpRequest httpRequest = HttpUtil.createGet("https://example.com");
httpRequest.setSSLFactory(sslFactory);
HttpResponse response = httpRequest.execute();
请注意修改: - keystore.jks
:包含客户端证书的Java密钥库路径 - password
:Java密钥库的密码 - truststore.jks
:包含信任的证书链的Java信任库的路径
这只是一个示例,您需要根据您的实际情况进行修改。
如果您无法升级Java版本或修改配置,并且没有其他信息可以提供,那么我无法提供更具体的解决方案。请尝试联系您的IT部门或相关技术支持,以便他们能够提供更好的帮助。