首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索隐私列表时,Openfire返回错误500

检索隐私列表时,Openfire返回错误500
EN

Stack Overflow用户
提问于 2016-02-18 18:57:57
回答 1查看 794关注 0票数 0

我正在使用converse.js,并试图处理隐私列表。我试着发送这个智商:

代码语言:javascript
复制
<body rid="2993056535" xmlns="http://jabber.org/protocol/httpbind" sid="578oe88nm1">
    <iq from="alex3@ofb2" type="set" id="active1" xmlns="jabber:client">
        <query xmlns="jabber:iq:privacy"/>
    </iq>
</body>

这是服务器返回我的内容:

代码语言:javascript
复制
<body xmlns="http://jabber.org/protocol/httpbind" ack="2993056535">
    <iq xmlns="jabber:client" type="error" id="active1" to="alex3@ofb2/converse.js-90734653">
        <query xmlns="jabber:iq:privacy"/>
        <error code="500" type="wait">
            <internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
        </error>
    </iq>
</body>

在服务器日志中,我看到了这个异常:

代码语言:javascript
复制
2016.02.19 12:49:00 org.jivesoftware.openfire.handler.IQHandler - Internal server error
java.lang.NullPointerException
        at org.jivesoftware.openfire.handler.IQPrivacyHandler.handleIQ(IQPrivacyHandler.java:120)
        at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:66)
        at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:372)
        at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:115)
        at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:78)
        at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:108)
        at org.jivesoftware.openfire.SessionPacketRouter.route(SessionPacketRouter.java:67)
        at org.jivesoftware.openfire.http.HttpSession.sendPendingPackets(HttpSession.java:639)
        at org.jivesoftware.openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1270)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 12:59:12

堆栈跟踪指向这些线

代码语言:javascript
复制
// Privacy list handling (create/edit/delete)
Element list = child.element("list");
String listName = list.attributeValue("name");

也就是说,它查找子元素<list>,并在找不到它时崩溃。

那它为什么要找这个呢?如果IQ有set类型(而不是<default><active>子元素),那么这就是它所需要的分支。然而,正如在XEP-0016中所描述的,要获取现有隐私列表的名称,您需要发送一个get类型的IQ。您的请求应该如下所示:

代码语言:javascript
复制
<iq from='romeo@example.net/orchard' type='get' id='getlist1'>
<query xmlns='jabber:iq:privacy'/>
</iq>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35490131

复制
相关文章

相似问题

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