Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代号“一次推送通知遇到错误”;javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败;_Ssl_Https_Codenameone - Fatal编程技术网

代号“一次推送通知遇到错误”;javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败;

代号“一次推送通知遇到错误”;javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败;,ssl,https,codenameone,Ssl,Https,Codenameone,我们有一个web项目,它总是运行良好,它只是使用代码名one push api将通知推送到我们的设备上,但它突然出现以下错误: javax.net.ssl.SSLHandshakeException:收到致命警报: 握手失败 下面是核心代码(与CodenamoeOne演示相同) 我直接在单元测试中运行代码,效果很好 但是,当我从项目中调用函数时(例如,从网页中调用按钮),出现了错误 我尝试了几种方法来解决它,但仍然无法工作,请给我一些建议来解决这个问题。谢谢大家! 如果证书无效或过期等,通常会发

我们有一个web项目,它总是运行良好,它只是使用代码名one push api将通知推送到我们的设备上,但它突然出现以下错误:

javax.net.ssl.SSLHandshakeException:收到致命警报: 握手失败

下面是核心代码(与CodenamoeOne演示相同)

我直接在单元测试中运行代码,效果很好

但是,当我从项目中调用函数时(例如,从网页中调用按钮),出现了错误


我尝试了几种方法来解决它,但仍然无法工作,请给我一些建议来解决这个问题。谢谢大家!

如果证书无效或过期等,通常会发生这种情况。如果您的连接不正确,则可能会发生这种情况。我刚刚在推送服务器上验证了我们的SSL证书,并且它是有效的(由cloudflare生成),因此我建议检查到服务器的路由和您的Java版本。您应该使用Java 8或更高版本,并且具有足够的最新次要更新版本。

如果证书无效或过期等,通常会发生这种情况。如果您的连接失败,则可能会发生这种情况。我刚刚在推送服务器上验证了我们的SSL证书,并且它是有效的(由cloudflare生成),因此我建议检查到服务器的路由和您的Java版本。您应该有Java 8或更高版本,并且有足够小的更新版本。

谢谢!我的java版本:java版本“1.8.0_181”java(TM)SE运行时环境(build 1.8.0_181-b13)java热点(TM)64位服务器虚拟机(build 25.181-b13,混合模式),这似乎足够新了。尝试连接到它有相同的证书,应该可以正常工作,但如果有SSL连接问题,它应该以同样的方式失败。是的,我认为你方的SSL不是问题。我只是很困惑,因为当我在main[]函数中运行演示代码时,它工作得很好,设备可以接收通知。但是当我打包函数并从web服务调用它时,错误会弹出……我尝试连接“codenameone.com/index.html”和codenameone.com。仍然获得“javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败”。如果我连接到其他网站,如“”,它工作正常。您确定服务器上使用的JVM与本地使用的JVM相同吗?可能您服务器上的证书存储库已损坏。谢谢!我的java版本:java版本“1.8.0_181”java(TM)SE运行时环境(build 1.8.0_181-b13)java热点(TM)64位服务器虚拟机(build 25.181-b13,混合模式),这似乎足够新了。尝试连接到它有相同的证书,应该可以正常工作,但如果有SSL连接问题,它应该以同样的方式失败。是的,我认为你方的SSL不是问题。我只是很困惑,因为当我在main[]函数中运行演示代码时,它工作得很好,设备可以接收通知。但是当我打包函数并从web服务调用它时,错误会弹出……我尝试连接“codenameone.com/index.html”和codenameone.com。仍然获得“javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败”。如果我连接到其他网站,如“”,它工作正常。您确定服务器上使用的JVM与本地使用的JVM相同吗?可能服务器上的证书存储库已损坏。
HttpURLConnection connection = (HttpURLConnection)new URL("https://push.codenameone.com/push/push").openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
String cert = ITUNES_DEVELOPMENT_PUSH_CERT;
String pass = ITUNES_DEVELOPMENT_PUSH_CERT_PASSWORD;
if(ITUNES_PRODUCTION_PUSH) {
    cert = ITUNES_PRODUCTION_PUSH_CERT;
    pass = ITUNES_PRODUCTION_PUSH_CERT_PASSWORD;
}
String query = "token="  + PUSH_TOKEN +
    "&device=" + URLEncoder.encode(deviceId1, "UTF-8") +
    "&device=" + URLEncoder.encode(deviceId2, "UTF-8") +
    "&device=" + URLEncoder.encode(deviceId3, "UTF-8") +
    "&type=1" +
    "&auth=" + URLEncoder.encode(FCM_SERVER_API_KEY, "UTF-8") +
    "&certPassword=" + URLEncoder.encode(pass, "UTF-8") +
    "&cert=" + URLEncoder.encode(cert, "UTF-8") +
    "&body=" + URLEncoder.encode(MESSAGE_BODY, "UTF-8") +
    "&production=" + ITUNES_PRODUCTION_PUSH +
    "&sid=" + URLEncoder.encode(WNS_SID, "UTF-8") +
    "&client_secret=" + URLEncoder.encode(WNS_CLIENT_SECRET, "UTF-8");
try (OutputStream output = connection.getOutputStream()) {
    output.write(query.getBytes("UTF-8"));
}
int c = connection.getResponseCode();
// read response JSON