在 Smack 库的 protected 类 中生成的异常
Exceptions generated inside protected classes of Smack library
我正在尝试使用 Smack 与 Firebase Cloud Messaging 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.access0(XMPPTCPConnection.java:948)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:963)
at java.lang.Thread.run(Thread.java:818)
如您所见,出现问题的 Smack classes 是:
保护 class XMPPTCPConnection.PacketReader 和
受保护 class XMPPTCPConnection.PacketWriter
试图读取的异常中提到的 BufferedReader 是什么?来自 FCM CCS 的 XML 回复?我应该在尝试连接之前验证此连接吗?这就是这里发生的事情,当我尝试连接而不验证连接对象正在尝试验证自身并且 XML 数据包被发送到这些受保护的 classes 的 Smack 库?如果这些 XML 文件确实是由 FCM CCS 发送的,我如何才能获得这些可能出于身份验证目的而发送的文件?
感谢任何意见或建议
大家好:
我在这里缺少的只是一个 SSLsocket 对象来消除错误。因为,我对套接字和机器对机器的连接了解不多,所以我没有任何线索。看了很多书后,我意识到我错过了这个对象。现在错误消失了,连接可以在我的 Android 代码和 FCM CCS 之间流动。所以我只是将此方法调用添加到我的 configBuilder 对象中:
.setSocketFactory(contexty.getSocketFactory());
但是,我 运行 遇到了使用 Smack 处理 SASLAuthentication 的新错误。我将很快发布有关这些错误的问题。似乎我离建立一个可行的 connection/login 到 FCM CCS 越来越近了。
我正在尝试使用 Smack 与 Firebase Cloud Messaging 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.access0(XMPPTCPConnection.java:948)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:963)
at java.lang.Thread.run(Thread.java:818)
如您所见,出现问题的 Smack classes 是: 保护 class XMPPTCPConnection.PacketReader 和 受保护 class XMPPTCPConnection.PacketWriter 试图读取的异常中提到的 BufferedReader 是什么?来自 FCM CCS 的 XML 回复?我应该在尝试连接之前验证此连接吗?这就是这里发生的事情,当我尝试连接而不验证连接对象正在尝试验证自身并且 XML 数据包被发送到这些受保护的 classes 的 Smack 库?如果这些 XML 文件确实是由 FCM CCS 发送的,我如何才能获得这些可能出于身份验证目的而发送的文件?
感谢任何意见或建议
大家好:
我在这里缺少的只是一个 SSLsocket 对象来消除错误。因为,我对套接字和机器对机器的连接了解不多,所以我没有任何线索。看了很多书后,我意识到我错过了这个对象。现在错误消失了,连接可以在我的 Android 代码和 FCM CCS 之间流动。所以我只是将此方法调用添加到我的 configBuilder 对象中:
.setSocketFactory(contexty.getSocketFactory());
但是,我 运行 遇到了使用 Smack 处理 SASLAuthentication 的新错误。我将很快发布有关这些错误的问题。似乎我离建立一个可行的 connection/login 到 FCM CCS 越来越近了。