我有一个java编译包与https服务器在网上说话。运行编译会出现以下异常:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)

我认为这是因为与客户端机器建立的连接不安全。是否有任何方法配置本地机器或端口以连接到远程https服务器?


当前回答

我得到了同样的错误。这是因为我正在访问https端口使用http..当我将http更改为https时,问题解决了。

其他回答

如果你在Java 6或更早的版本上从命令行运行Java进程,添加这个开关为我解决了上面的问题:

-Dhttps.protocols=“TLSv1”

我得到了同样的错误。这是因为我正在访问https端口使用http..当我将http更改为https时,问题解决了。

当我在通过代理执行POST请求之前忘记登录公司防火墙时,我得到了同样的错误消息。

我在Jdevelopr 11.1.1.7 IDE中构建的Java应用程序也面临同样的问题。我通过取消对代理表单项目属性的使用来解决这个问题。

你可以在下面找到它: 项目属性->(从左边面板)运行/调试/配置文件->在右边面板单击(编辑)->工具设置从左边面板->取消(使用代理)选项。

正如EJP所说,这是由于调用非https协议而显示的消息。 如果你确定它是HTTPS,检查你的旁路代理设置,并在这种情况下将你的webservice主机url添加到旁路代理列表