我正在为Java开发Java推送通知服务,并且为此我使用了JavaPNS 2.2。我已使用此site上的教程来创建我的Apple证书,并成功运行演示(使用PHP)。 (我也转换了.p12,.pem文件中的证书)。JavaPN抛出SSLHandshakeException java.io.EOFException:SSL对端关闭不正确
然而,当我尝试在我的测试类(如JavaPNS教程中指定)运行在Java中简单的推送通知,
public class PushTest {
public static void main(String[] args) {
try {
List<PushedNotification> notifications = Push.alert("Hello World!", "<filename>.p12", "<password>", true, "<devicetoken>");
System.out.println("List of Device: "+notifications);
List<Device> inactiveDevices = Push.feedback("<filename>.p12", "<password>", true);
} catch (CommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeystoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我得到,
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(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.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.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.test(Push.java:132)
at javapns.test.NotificationTest.pushTest(NotificationTest.java:83)
at javapns.test.NotificationTest.main(NotificationTest.java:46)
调试JavaPNS后代码在月食我来知道错误是由于,
java.io.EOFException: SSL peer shut down incorrectly
现在我不在站在什么问题上,因为我的证书(使用.PEM扩展名)在PHP示例中正常工作。
如果它在PHP中工作,而不是在Java中,我怀疑它的证书的错误,并且JavaPNS站点也没有指定天气,我必须通过keytool
导入生成的证书。
任何人都可以请帮我解决我的问题吗? FYI:我的系统配置, OS:Win 7的 的Java:jdk1.6.0_05 JavaPNS:2.2