XEP 0055(Jabber 搜索)与 iphone SDK

Posted

技术标签:

【中文标题】XEP 0055(Jabber 搜索)与 iphone SDK【英文标题】:XEP 0055 (Jabber search) with iphone SDK 【发布时间】:2013-05-02 12:16:56 【问题描述】:

我正在 ios 上创建一个 XMPP 示例。我想做的是通过 xmpp 搜索用户。我检查了 opernfire 服务器,它启用了搜索插件。我浏览了XEP:0055 并找到了该节。我也经历过this so question,但做了

我已完成 xmpp 连接和登录。现在这里是关于我的服务器的详细信息:

主机名 = 10.x.x.x; 服务器名称 = abcd;

我从 XEP 0055 链接得到的请求格式是:

<iq type='set' from='romeo@montague.net/home' to='characters.shakespeare.lit' id='search2' xml:lang='en'>
    <query xmlns='jabber:iq:search'>
        <last>Capulet</last>
    </query>
</iq>

我不知道characters.shakespeare.lit 是什么。我假设这是服务器名称。所以我创建了以下请求:

<iq to="abcd" id="search2" xml:lang="en">
    <query xmlns="jabber:iq:search">
       <Username>kapil</Username>
    </query>
</iq>

但我没有得到任何回应。我尝试用以下search.abcd10.x.x.x 替换to 值,但我什至没有收到此请求的任何响应智商。

任何帮助请。

【问题讨论】:

【参考方案1】:

shakespeare.lit 是 xmpp 主机名。 “characters”是搜索服务名称。

【讨论】:

【参考方案2】:

它是目录服务的名称。如果连接到服务器,则可以检索服务列表并使用该服务器的目录服务。或者,您可以使用任何服务器的目录服务(根据服务的配置,您不必连接到托管该服务的服务器)。

【讨论】:

感谢您的回复,但不明白您的意思。我做错了什么? 只要阅读你自己引用的 XEP 的第 1 和第 2 节,可以看到“to”指的是目录服务。阅读 XEP-0030 以了解有关 Jabber 网络中服务的更多信息。【参考方案3】:
    var iq = $iq(
          type: 'set',
          id: 'search2',
          to: 'vjud.yourserver.org'
    )
.c('query', xmlns: 'jabber:iq:search')
.c('x', xmlns: 'jabber:x:data', type:'submit')
.c('field', var: 'first').c('value','Rub*').up(); 
conn.sendIQ(iq);

注意:收件人:characters.shakespeare.lit

不是您的服务器,而是 vcard 服务搜索。

【讨论】:

以上是关于XEP 0055(Jabber 搜索)与 iphone SDK的主要内容,如果未能解决你的问题,请参考以下文章

XEP-0055 的错误 400 错误请求?

XMPP - iphone sdk 中的用户搜索?在 iphone sdk 中使用 XEP-0055?

XEP - 0055 与 iOS 和 ejabberd?

如何使用 Jabber-net 库实现 XEP-0012

通过 XEP0065 SOCKS5 字节流代理在 smack 中传输 XMPP 文件

允许 ejabberd_service(Jabber 组件协议)修改用户名册