首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用asmack连接聊天室

无法使用asmack连接聊天室
EN

Stack Overflow用户
提问于 2014-01-31 20:24:08
回答 1查看 1.2K关注 0票数 0

我的问题是,我不能接受加入聊天室。我使用的是openfire服务器3.8.2和asmack库asmack-Androd-16.jar。当我调用getJoinedRooms函数时,我会收到没有找到的错误。虽然我可以看到用户是从管理控制台在房间中加入的。是服务器问题还是客户端问题,还是与asmack有关的问题?请告诉我,如果有人能够加入聊天室使用openfire和asmack为android。

下面是我如何调用该函数:

代码语言:javascript
复制
Iterator RoomsIterator=MultiUserChat.getJoinedRooms(MyService.getConnection(),"user@192.168.1.3");

我也尝试过,但它没有给出响应形式服务器: Iterator RoomsIterator=MultiUserChat.getJoinedRooms(MyService.getConnection(),"user@192.168.1.3/Smack");

请提前帮助我解决我的问题,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 09:26:02

我解决了我的问题,增加了一个分组侦听器后,打电话入室功能。当我得到一个空列表时,当我调试时,我检查这些房间是否在服务器发送的结果xml stanze中返回,因此我运行asmack的getjoinedroom函数,然后手动添加ha数据包侦听器,如下所示:

代码语言:javascript
复制
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);

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21489387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档