xmpp - Smack API,connect() 异常

标签 xmpp smack eofexception

我尝试连接到我公司的 XMPPServer 并收到以下异常:

java.io.EOFException: input contained no data
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3003)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:325)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)

我的代码非常基础......

System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;
ConnectionConfiguration config = new ConnectionConfiguration("xxx", 5223);
config.setSecurityMode(SecurityMode.enabled);
config.setSASLAuthenticationEnabled(true);
config.setDebuggerEnabled(true);
config.setCompressionEnabled(false);
XMPPConnection connection = new XMPPConnection(config);
connection.connect();

我做错了什么?
Smack 调试窗口中的“原始发送数据包”似乎显示了正确的 xml 流:

<stream:stream to="xxx" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
<presence id="3347O-0" type="unavailable"></presence>
</stream:stream>

---- 更新 ----

我发现了这个问题。
对于 SSL 连接,需要以下代码:

config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
config.setSocketFactory(new DummySSLSocketFactory());

DummySSLSocketFactory 类可以在 Spark 中找到或直接在此处找到:

http://svn.igniterealtime.org/svn/repos/spark/trunk/src/java/org/jivesoftware/spark/util/DummySSLSocketFactory.java

最佳答案

我发现了这个问题。
对于 SSL 连接,需要以下代码:

config.setSecurityMode(ConnectionConfiguration.SecurityMode.enabled);
config.setSocketFactory(new DummySSLSocketFactory());

您可以使用DummySSL class ,也可以在 Spark 中找到。

关于xmpp - Smack API,connect() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183315/

相关文章:

ejabberd 的 WebSocket 支持

authentication - 支持基于客户端证书的身份验证的 Jabber 客户端

android - 如何在android中的两个 Activity 之间传递XMPPTCPConnection对象?

android - Smack 在 Android 上,通过本地 Openfire 服务器在两个用户之间发送数据包/消息时收到错误代码 ="404"未找到远程服务器

java - 使用 ObjectOutputStream 读取自定义类时出现 EOFException

python - XMPP 订阅节 Google Talk

android - 如何在android中发送smack中的音频文件

java - 使用 XMPP 协议(protocol)通过 tigase 服务器将字符串数组从一个 Android 发送到另一个 Android

java - DataInputStream 给出 java.io.EOFException

android - HttpsUrlConnection EOFException