我有以下代码:
package daoImp;
import java.util.List;
import javapns.Push;
import javapns.communication.exceptions.KeystoreException;
import javapns.notification.PushedNotification;
import javapns.notification.ResponsePacket;
import org.json.JSONException;
import com.sun.jmx.snmp.daemon.CommunicationException;
public class Notification {
public static void main(String args[]) {
try {
new Notification().sendMessageToAPN();
} catch (CommunicationException | KeystoreException | JSONException
| javapns.communication.exceptions.CommunicationException e) {
e.printStackTrace();
}
}
public void sendMessageToAPN() throws CommunicationException,
KeystoreException, JSONException,
javapns.communication.exceptions.CommunicationException {
String regId1 = "6f9d340ab4d0f81206f7d8c1ab7b8994d90d139e0d1d2b99999b02887e60d54f";
List<PushedNotification> notifications = Push.alert("hello","C:/Program Files (x86)/Java/jdk1.7.0_21/jre/lib/security/gameover.p12", "gameover",
false, regId1);
for (PushedNotification notification : notifications) {
if (notification.isSuccessful()) {
System.out.println("Push notification sent successfully to: " + notification.getDevice().getToken());
} else {
String invalidToken = notification.getDevice().getToken();
System.err.println("Invalid Token " + invalidToken);
System.out.println(" The problem was");
Exception theProblem = notification.getException();
theProblem.printStackTrace();
ResponsePacket theErrorResponse = notification.getResponse();
if (theErrorResponse != null) {
System.out.println(theErrorResponse.getMessage());
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到以下异常消息:handshake to ssl failed as connection to remote host failed during handshake.
log4j:WARN No appenders could be found for logger (javapns.notification.Payload).
log4j:WARN Please initialize the log4j system properly.
Invalid Token 6f9d340ab4d0f81206f7d8c1ab7b6774d90d139e0d1d2b58599b02887e60d54f
The problem was
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
at sun.security.ssl.AppOutputStream.write(Unknown Source)
at java.io.OutputStream.write(Unknown Source)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:402)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:350)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:320)
at javapns.Push.sendPayload(Push.java:177)
at javapns.Push.alert(Push.java:47)
at daoImp.Notification.sendMessageToAPN(Notification.java:27)
at daoImp.Notification.main(Notification.java:16)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(Unknown Source)
... 12 more
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我会收到这条消息。
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Caused by: java.io.EOFException: SSL peer shut down incorrectly
Run Code Online (Sandbox Code Playgroud)
Exception如果存在以下任何一种情况,以上是我们在客户端中获得的一般异常:
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
证书链 qtp510727907-31,致命错误:42:空证书链 javax.net.ssl.SSLHandshakeException:空证书链 %% 无效:[Session-3, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA]
qtp5107217907_CBC_SHA ] qtp5107117907 - tsp5107217907 - tlvts 51vts 59t 59ts 错误描述-31,写入:TLSv1 警报,长度 = 2
主要,写入:TLSv1 更改密码规范,长度 = 1 qtp510727907-31,致命:引擎已关闭。重新抛出
javax.net.ssl.SSLHandshakeException:空证书链
要知道失败的确切原因,我们需要在-Djavax.net.debug=all对服务器执行客户端调用时启用。
我相信您丢失了您的证书。
您可以使用 InstallCerts 应用程序生成它们。(http://miteff.com/install-cert)
或http://opentox.ntua.gr/blog/77-ssl-certificates
获得证书后,您需要将其放在 jdk 主目录中的 security 目录下,例如:
C:\Program Files\Java\jdk1.6.0_45\jre\lib\security
希望这能解决您的问题
| 归档时间: |
|
| 查看次数: |
39468 次 |
| 最近记录: |