2012-02-07 28 views
2

我試圖連接到我的公司XMPPServer並獲得以下異常:啪API,connect()的異常

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(); 

上午什麼我做錯了?
「原始發送的數據包」,從啪調試窗口似乎顯示正確的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> 

---- ---- UPDATE

我發現這個問題。
對於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

+0

如果您發現問題的解決方案,請將其作爲答案發布,而不是更新您的問題。 – Flow 2012-02-08 10:49:48

+0

這是因爲我在不到8個小時的時間內找到了解決問題的方案......它不允許我馬上發佈答案。 – julia 2012-02-09 01:01:53

回答

2

我發現這個問題。
對於SSL連接需要以下代碼:

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

可以使用DummySSL class,這也可以在星火找到。