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);
具体为什么这样做我现在还没弄清楚,有哪位朋友弄清楚这个问题,就贴出来分享一下呗。
分类:
Exception
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库