我们正在使用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或静音属性。
谢谢大家
答案 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
}