发送和接收IQ数据包ASMACK / SMACK Android XMPP

时间:2011-09-15 02:44:51

标签: android smack vcard

如果有人能帮助我如何使用ASMACK接收iq数据包,我将非常感激,我发送原始iq数据包但无法接收它,

我在建立连接之前以编程方式注册了iq数据包,但仍然没有得到响应,

     pm.addIQProvider("vCard", "vcard-temp", new VCardProvider());

  final IQ iq = new IQ() {
          public String getChildElementXML() {
            return "<iq from='test@XX.XX.XX.XX' id='v1'      to='test@XX.XX.XX.XX' type='get'><vCard xmlns='vcard-temp'/></iq>";
          }
        };

    iq.setType(IQ.Type.GET);
        connection.sendPacket(iq);
        connection.addPacketListener(new MyPacketListener(),new       PacketTypeFilter(IQ.class));    

2 个答案:

答案 0 :(得分:0)

首先,尝试在发送数据包之前设置数据包侦听器。它是一个异步协议,可能在设置侦听器之前返回响应。

然后尝试设置-DsmackDebugEnabled = true以检查是否有对您的发送的实际响应。

答案 1 :(得分:0)

您可以实现Packet Listener方法,进程Packet(Packet packet)方法将为您提供传入的数据包。这是一个堆栈线程,解释了相同的问题aSmack - Packet to XML using Packet Listener outputs nullable elements