在我的数据包侦听器中没有收到数据包

时间:2015-10-17 18:27:48

标签: android asmack

我们正在使用asmack(目前版本为4.0.3)。直到2月份我才坚持使用那个版本。第一个关于SO的问题和新的问题,所以请耐心等待。 我在Android上收到了这个数据包(显示在调试日志中)。

RCV(1):

< presence xmlns="jabber:client"
from="roomID@chat.myUrl.com/d67d0529-cdb3-4842-872b-8968ad635194" to="moo@myUrl.com/d67d0529-cdb3-4842-872b-8968ad635194">
< x xmlns="http://jabber.org/protocol/muc#user">
< item affiliation="member"
 role="participant"
 name="my name"
 type="web"
 mute="false">
< /item>
< status xmlns="http://jabber.org/protocol/muc" code="301"></status>
< status xmlns="http://jabber.org/protocol/muc" code="110">< /status>
< /x>
< /presence>

我的数据包过滤器

   PacketFilter presenceFilter = new AndFilter(new FromMatchesFilter(roomId + "@chat." + myUrl, true), new PacketTypeFilter(Presence.class));

    connectionXmpp.addPacketListener(myPacketListener, presenceFilter);

我的数据包监听器

 private class myPacketListener implements PacketListener{
        @Override
        public void processPacket(Packet packet) throws NotConnectedException {
        Log.i(TAG," Packet to xml : "+packet.toXML());
    }
}

如何处理xml及其所有内容?我收到两个状态码,我需要解析它们。如何处理“x”标记中的所有数据。我的数据包侦听器返回一堆输出,但不包含状态代码301或静音属性。

谢谢大家

1 个答案:

答案 0 :(得分:0)

尝试在processPacket方法中添加以下代码,以获取packet详细信息。

 @Override
    public void processPacket(Packet packet) throws NotConnectedException   
 {
    Log.i(TAG," Packet to xml : "+packet.toXML());
   //new code start
       Message message = (Message) packet;

            if (message.getType() == Message.Type.error) {
                return;
            }
            if (message.getBody() != null) {
 Log.i("Message==>",message.getBody());
 Log.i("Message From",message.getFrom())
            }
   //new code end
}