【问题标题】:service unavailable error in openfire message archive managementopenfire消息存档管理中的服务不可用错误
【发布时间】:2018-12-16 16:36:33
【问题描述】:

我正在使用监控插件 1.6.0 和 openfire 4.2.0。

以下是 openfire 管理控制台存档设置的屏幕截图。

以下是我正在使用的插件的屏幕截图。

我的问题

如您所见,插件已安装。 但是当我尝试使用以下代码获取聊天记录时:我收到服务不可用响应。

func fetchChatHistoryFromServer(completionHandler completion: @escaping FetchChatHistoryCompletionHandler) {

    let iq = DDXMLElement(name: "iq")
    iq.addAttribute(withName: "type", stringValue: "set")
    iq.addAttribute(withName: "id", stringValue: UserManager.shared.activeUser.jid)

    let query = DDXMLElement(name: "query")
    query.setXmlns("urn:xmpp:mam:2")
    query.addAttribute(withName: "queryid", stringValue: XMPPManager.shared.xmppStream.generateUUID)

    let x = DDXMLElement(name: "x")
    x.setXmlns("jabber:x:data")
    x.addAttribute(withName: "type", stringValue: "submit")


    let field = DDXMLElement(name: "field")
    field.addAttribute(withName: "var", stringValue: "FORM_TYPE")
    field.addAttribute(withName: "type", stringValue: "hidden")
    let fieldValue = DDXMLElement(name: "value", stringValue: "urn:xmpp:mam:2")
    field.addChild(fieldValue)
    x.addChild(field)
    query.addChild(x)
    iq.addChild(query)
    //let xmppResultSet = XMPPResultSet(max: 2000)
    Logger.log(iq)
    didFetchChatHistoryCompletionBlock = completion
    xmppMessageArchivingManagement?.retrieveMessageArchive(withFields: [iq], with: nil)
}

输出日志:-

<iq type="set" id="dev60@dev.myapp.com">
    <query xmlns="urn:xmpp:mam:2" queryid="20B07616-12BC-41BB-9DE6-F0F6A74951A5">
        <x xmlns="jabber:x:data" type="submit">
            <field var="FORM_TYPE" type="hidden">
                <value>urn:xmpp:mam:2</value>
            </field>
        </x>
     </query>
</iq>

回应:--

<iq xmlns="jabber:client" type="error" id="7BED0303-46E3-40D4-BE47-543BB7810F66" to="dev60@dev.myapp.com/a3lb3jaw9g">
<query xmlns="urn:xmpp:mam:2" queryid="80D6D753-B2BF-4626-84B5-C216D4B94996">
    <x xmlns="jabber:x:data" type="submit">
        <field var="FORM_TYPE" type="hidden">
        <value>urn:xmpp:mam:2</value>
        </field>
        <iq type="set" id="dev60@dev.myapp.com">
            <query xmlns="urn:xmpp:mam:2" queryid="20B07616-12BC-41BB-9DE6-F0F6A74951A5">
                <x xmlns="jabber:x:data" type="submit">
                    <field var="FORM_TYPE" type="hidden">
                        <value>urn:xmpp:mam:2</value>
                    </field>
                </x>
            </query>
        </iq>
    </x>
</query>
<error code="503" type="cancel">
    <service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></service-unavailable>
</error>

【问题讨论】:

    标签: ios openfire xmppframework


    【解决方案1】:

    openfire 不支持urn:xmpp:mam:2,你必须使用urn:xmpp:mam:1。 您必须在 XMPPMessageArchiveManagemnt 类中更改它。 只需转到 XMPPMessageArchiveManagement 类。它说的第 20 行 /** 'urn:xmpp:mam:2' */ extern NSString *const XMLNS_XMPP_MAM;。 只需按住命令并在将 urn:xmpp:mam:2 更改为 urn:xmpp:mam:1 后单击 XMLNS_XMPP_MAM

    【讨论】:

    • 已经尝试过------- --- ---------------- 但结果相同 -------- ----
    • 也试过 -------- urn:xmpp :mam:1--------------------------------- 但也没有运气....
    • @PawanJoshi 我认为你没有指定“with”字段。你的传出 IQ 应该是这样的 &lt;iq type='set' id='juliet1'&gt; &lt;query xmlns='urn:xmpp:mam:2'&gt; &lt;x xmlns='jabber:x:data' type='submit'&gt; &lt;field var='FORM_TYPE' type='hidden'&gt; &lt;value&gt;urn:xmpp:mam:2&lt;/value&gt; &lt;/field&gt; &lt;field var='with'&gt; &lt;value&gt;juliet@capulet.lit&lt;/value&gt; &lt;/field&gt; &lt;/x&gt; &lt;/query&gt; &lt;/iq&gt; JID 不应该有任何 xmpp 域或资源,只使用本地部分跨度>
    • 尝试了以下三个-------- dev64@dev.myapp.com field>urn:xmpp:mam:1 ----- - 但结果相同。
    • @PawanJoshi 因为您使用的是 MAM:2 。只需转到 XMPPMessageArchiveManagement 类。在第 20 行中它说/** 'urn:xmpp:mam:2' */ extern NSString *const XMLNS_XMPP_MAM;。只需按住命令并单击XMLNS_XMPP_MAM,然后将urn:xmpp:mam:2更改为urn:xmpp:mam:1
    猜你喜欢
    • 2012-07-08
    • 2016-12-26
    • 2012-01-03
    • 2017-05-12
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多