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

打开连接失败:javax.net.ssl.SSLException:无法识别的ssl消息,纯文本连接?,java,ssl,Java,Ssl,我已经使用SOAP UI创建了一个rest mockservice。 我正试图从我的java类连接它。但这是错误的 Open connection failed: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source) sun.security.ssl.InputRecor

我已经使用SOAP UI创建了一个rest mockservice。 我正试图从我的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();

我尝试连接的URL是-

,如果您想使用HTTPS,那么

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

https.proxyHost
https.proxyPort
正如你可能猜到的,这些工作与他们的工作方式完全相同 http对应,因此我们将不详细介绍,只提及 这一次,默认端口号是443,而“非 “代理主机”列表中,HTTPS协议处理程序将使用与 http处理程序(即http.NoProxyHosts)

资源链接:

解决方案1: 将以下内容添加到
JAVA\u OPTS
环境变量中:

-Djsse.enableSNIExtension=false
重新启动群组实例

资源链接:

解决方案2:
我认为这是由于与客户机建立的连接不安全造成的。 这是因为您正在与HTTP服务器而不是HTTPS服务器交谈。可能您没有为HTTPS使用正确的端口号

功劳归于@

资源链接:

解决方案3: 如果使用SMTP域名,则属性必须为true

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

您也可以通过此链接:

您正在混合HTTP和HTTPS内容。模拟服务是否通过SOAP UI通过SSL公开?您只需要将地址变量方案更改为HTTPS。SOAP UI是否通过HTTP公开模拟?您必须使用URLConnection而不是HttpsURLConnectionNo我的mockservice不是通过SSL公开的,我如何才能做到这一点?请建议我。这将作为http请求工作,但我想将其设置为https。@然后使用正确的端口号。不要简单地发布代码片段,请在回答中添加一些说明。像这样的答案经常被删除。解决方案3最终对我有效。我认为这是因为与客户端计算机建立的连接不安全。这是因为您正在与HTTP服务器而不是HTTPS服务器交谈。可能您没有为HTTPS使用正确的端口号。
props.put("mail.smtp.socketFactory.fallback", "true"); // Make it true