aSmack文件传输返回NPE

时间:2014-07-01 17:55:06

标签: android xmpp asmack

我正在开发一个聊天应用程序,在FileTransfers,我可以成功地将文件发送到spark客户端,但在收听时,我在协商部分收到NullPointerException错误,这里是android客户端从spark收到的IQ:

 RCV (0): <iq id="dnkUY-33" to="reza@reza-hp/Smack" from="admin@reza-hp/Spark 2.6.3"  
 type="set">
 <si xmlns="http://jabber.org/protocol/si" id="jsi_5267323957851897853" 
 mime-type="image/jpeg" profile="http://jabber.org/protocol/si/profile/file-
 transfer">
 <file xmlns="http://jabber.org/protocol/si/profile/file-transfer" 
 name="635px-Food.jpg" size="45135">
 <desc>Sending file</desc>
 </file><feature 
 xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="form">
 <field var="stream-method" type="list-single">
  <option><value>http://jabber.org/protocol/bytestreams</value></option><option>   
  <value>http://jabber.org/protocol/ibb</value></option></field></x></feature> 
  </si></iq>

这是错误Printed:

   07-01 13:40:49.075: W/System.err(1986): java.lang.NullPointerException
   07-01 13:40:49.075: W/System.err(1986):  
   atorg.jivesoftware.smackx.filetransfer.
   IncomingFileTransfer.negotiateStream(IncomingFileTransfer.java:173)
   07-01 13:40:49.075: W/System.err(1986):  at  
   org.jivesoftware.smackx.filetransfer.
   IncomingFileTransfer.access$100(IncomingFileTransfer.java:45)
   07-01 13:40:49.075: W/System.err(1986):  at  
   org.jivesoftware.smackx.filetransfer.
   IncomingFileTransfer$1.run(IncomingFileTransfer.java:122)
   07-01 13:40:49.085: W/System.err(1986):  at java.lang.Thread.run(Thread.java:841)

异常为空,但根据提供的IQ,似乎传输类型是“流启动”,所以我认为asmack默认情况下不会发现它,是否有任何解决方案,或知道如何发现“流启动”?非常感谢#3 哦,我正在使用OpenFire服务器:)

1 个答案:

答案 0 :(得分:0)

OOOkkk,刚刚找到解决方案,我对这个问题是正确的,对于aSmack的弱IT,对不起,只需添加这个字段:

 ServiceDiscoveryManager.getInstanceFor(connection).addFeature("jabber.org/protocol  
 /si"); 

所以你的aSmack支持StreamInitiation ....我相信这解决了很多问题

还可以在连接后添加文件传输提供程序,这有所不同。并且我的意思是,当你确定他们已经连接已经连接时,如果&#34;尝试&#34;

并且最重要的部分:肯定使用Asmack 8-4.0.0 rc-1,最适合文件传输的任何问题,我很乐意帮忙,经过1周的尝试,我想我学到了很多东西。感谢