在受保护的Smack库类中生成的异常

时间:2016-07-29 08:07:59

标签: android xml smack firebase-cloud-messaging xmlpullparser

我正在尝试与Smack建立与Firebase云消息传递CCS的连接。 我遇到以下受保护的Smack接口问题。我不确切地知道为什么要调用这些接口?

请参阅下文,了解如何建立配置构建器对象和我的连接:

configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setServiceName("192.168.1.74").setHost("fcm-  xmpp.googleapis.com").setUsernameAndPassword(s1, s2)              .setPort(5236).setSendPresence(false).setCompressionEnabled(false).setCustomSSLContext(contexty)
other_connection = new XMPPTCPConnection(configBuilder.build());
//other_connection object is an AbstractXMPPConnection object

android / smack代码尝试连接但未能这样做。以下是例外:请注意我的SSlcontext对象已使用keymanagerfactory初始化,该对象包含一个密钥库,该密钥库包含由证书颁发机构验证的有效证书。

例外:

**** Verification of void org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.<init>(org.jivesoftware.smack.tcp.XMPPTCPConnection) took 135.634ms*
07-29 03:30:14.211 3346-3408/rarigames.answerme V/RenderScript: 0xa172ca00 Launching thread(s), CPUs 2
07-29 03:30:39.281 3346-3548/rarigames.answerme D/ricky: Unable to connect or login to FCM CCS. org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 25000ms (~25s). Used filter: No filter used or filter was 'null'.
07-29 03:30:39.284 3346-3557/rarigames.answerme W/AbstractXMPPConnection: Connection closed with error
                                                                      org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ��F@1:8 in java.io.BufferedReader@2c985591) 
                                                                          at org.kxml2.io.KXmlParser.next(KXmlParser.java:432)
                                                                          at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
                                                                          at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1169)
                                                                          at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:948)
                                                                          at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:963)
                                                                          at java.lang.Thread.run(Thread.java:818)

正如您所看到的,提出问题的Smack类是: protected class XMPPTCPConnection.PacketReader和 protected class XMPPTCPConnection.PacketWriter 尝试阅读的异常中提到的Bufferedreader是什么?来自FCM CCS的XML回复?在尝试连接之前,我应该验证此连接吗?这是在这里发生的事情,当我尝试连接而不验证连接对象是试图验证自己和XML数据包被发送到这些受保护的Smack库类?如果这些XML文档实际上是由FCM CCS发送的,那么如何获取这些可能用于身份验证的XML文档呢?

感谢任何建议或建议

1 个答案:

答案 0 :(得分:0)

好的大家:

我在这里失踪的所有错误都是SSLsocket对象。因为,我不太了解插座和机器到机器的连接,我不知道。经过多次阅读,我意识到我错过了这个对象。现在连接可以在我的Android代码和FCM CCS之间流动,错误消失了。所以我只是将这个方法调用添加到我的configBuilder对象中:

 .setSocketFactory(contexty.getSocketFactory());

但是,我遇到了使用Smack处理SASLAuthentication的新错误。我将很快就这些错误发布一个问题。似乎我越来越接近建立一个可行的连接/登录FCM CCS。