打开连接失败:javax.net.ssl.SSLException:无法识别的SSL消息,明文连接?

时间:2016-05-03 12:29:52

标签: java ssl

我使用SOAP UI创建了一个休息模拟服务。     我正在尝试从我的java类连接它。但它失败了,错误

Open connection failed: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source)
sun.security.ssl.InputRecord.read(Unknown Source)
sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)

我不确定我哪里出错了。

以下是代码 -

java.net.URL url = new URL(null, address,new sun.net.www.protocol.https.Handler());
connection = (javax.net.ssl.HttpsURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/xml");
connection.setRequestMethod("GET");
connection.connect();

我尝试连接的网址是 - http://localhost:8089

2 个答案:

答案 0 :(得分:8)

如果您想使用 HTTPS ,那么

  

HTTPS(HTTP over SSL)协议处理程序有自己的一组   属性:

https.proxyHost
https.proxyPort
     

正如你可能猜到的那样,他们的工作方式与他们的完全相同   http同行,所以除了提及之外,我们不会详细介绍   默认端口号,这次是443,而#34;非端口号   代理主机"列表,HTTPS协议处理程序将使用相同的   http处理程序(即http.nonProxyHosts)。

资源链接:

Java Networking and Proxies for HTTPS

解-1:

将以下内容添加到JAVA_OPTS环境变量中:

-Djsse.enableSNIExtension=false

重启您的群组实例。

资源链接:

https://confluence.atlassian.com/crowdkb/unrecognized-ssl-message-plaintext-connection-582877397.html

解-2:

我认为这是由于与客户端机器建立的连接不安全。 这是因为您正在与HTTP服务器通信,而不是HTTPS服务器。可能您没有使用正确的HTTPS端口号。

归功于@ EJP

资源链接:

Unrecognized SSL message, plaintext connection? Exception

解决方案-3:

如果您使用SMTP域名,则mail.smtp.socketFactory.fallback必须属实。

props.put("mail.smtp.socketFactory.fallback", "true"); // Make it true

您也可以通过此链接:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

答案 1 :(得分:0)

java.net.URL url = new URL("http://localhost:8089");
java.net.URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/xml");
connection.setRequestMethod("GET");
connection.connect();