随笔 - 632  文章 - 17  评论 - 54  阅读 - 94万

android asmack调用MultiUserChat.getHostedRooms方法出现空指针的异常解决方案

今天在做即时通讯群聊时,调用MultiUserChat.getHostedRooms(conn, SmackTools.getInstance().conn.getServiceName());方法获取服务列表时总是出现空指针的情况。

当时出现这个错误的时候感觉是非怪的,因为参数:conn和服务名都不为空。而MultiUserChat.getHostedRooms也不可能为空。但是错误的异常却是空指针,郁闷。

 

找了好长时间都没找到到底是什么原因引起的异常,最后在stackoverflow上找到了灵感。

问题链接:http://stackoverflow.com/questions/10296022/cannot-get-list-of-public-rooms-from-xmpp-server-on-android/11664266#11664266

以上博客提出了针对此问题的解决方案:

在初始化XMPPConnection之前初始化ServiceDiscoveryManager类即可

以下是初始化代码:

复制代码
config = new ConnectionConfiguration(server, 5222);
            Class.forName("org.jivesoftware.smackx.ServiceDiscoveryManager", true, SmackTools.class.getClassLoader());
            // 是否启用压缩
//            config.setCompressionEnabled(true);
            // 是否启用安全认证
            config.setSASLAuthenticationEnabled(false);

            config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
            // 是否启用调试
            config.setDebuggerEnabled(false);
            // 创建连接
            conn = new XMPPConnection(config);
复制代码

具体为什么这样做我现在还没弄清楚,有哪位朋友弄清楚这个问题,就贴出来分享一下呗。

posted on   飘杨......  阅读(923)  评论(0)    收藏  举报
编辑推荐:
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
阅读排行:
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 基于Blazor实现的运输信息管理系统
· 如何统计不同电话号码的个数?—位图法
· 微信支付功能的设计实现与关键实践(UniApp+Java)全代码
< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示