我的问题是我无法接收加入的聊天室。我正在使用openfire服务器3.8.2和asmack库asmack-android-16.jar。调用getJoinedRooms函数时收到未找到项错误。虽然我可以从管理控制台中看到用户已加入会议室。是服务器问题还是客户端问题,还是asmack出现问题?请告诉我是否有人可以使用openfire和asmack for android加入聊天室。
这是我所谓的函数:
Iterator RoomsIterator=MultiUserChat.getJoinedRooms(MyService.getConnection(),"[email protected]");
我也尝试过这样做,但是它没有提供响应服务器:Iterator RoomsIterator = MultiUserChat.getJoinedRooms(MyService.getConnection(),“ [email protected]/Smack”);
请帮助我解决我的问题,在此先感谢。
我通过在呼叫获取加入房间功能后添加一个数据包侦听器解决了我的问题。当我得到一个空列表时,但是当我调试时,我检查了房间是否在服务器发送的结果xml stanze中返回了,所以我运行了asmack的getjoinedroom函数,然后我手动添加ha数据包侦听器,如下所示:
public void AddPacketListener(){
PacketFilter filter = new IQTypeFilter(IQ.Type.RESULT);
MyService.getConnection().addPacketListener(new PacketListener()
{
public void processPacket(Packet paramPacket) {
if(paramPacket.getFrom().equals(MyService.getConnection().getUser())){
String xml=paramPacket.toXML();
String from[];
System.out.println(xml);
from=paramPacket.getFrom().split("/");
Pattern pattern = Pattern.compile("<item jid=\"(.*?)/>");
Matcher matcher = pattern.matcher(xml);
String parts[];
Roomlist.clear();
while (matcher.find()) {
parts=matcher.group(1).split("@");
Roomlist.add(parts[0]);
}
return;
}
}
},filter);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句