如何使用smack库将Custom IQ节发送给其他用户?

时间:2016-08-05 12:24:57

标签: java xmpp openfire smack xmppframework

这是获取名册的样本IQ节

<iq from="alice@wonderland.lit/pda" id="rr82a1z7"
type="get">
    <query xmlns="jabber:iq:roster"/>
</iq>

通过设置“TO”属性,可以将Iq节从此standard specification定向到某个用户,以便xmpp服务器将IQ节转发到“TO”属性中指定的JID(完整Jabber ID) ,check specification

但是当我查询IQ节以满足我对此的需求时

<iq from="alice@wonderland.lit/pda" id="rr82a1z7"
to="alice@wonderland.lit/Smack"
type="get">
    <UserDetails xmlns="http://www.test.org/User/">
        <userName>username</username>
    </UserDetails>
</iq>

Stanza被转发到“alice@wonderland.lit”,但我从Openfire服务器收到一个IQ Stanzs,错误条件为“未实现”功能。

有没有办法摆脱这个错误并得到结果?

我按照tutorial生成了客户端。

我可以看到收到自定义Stanza的wireshark痕迹但是看不到“myIQListener”被调用?

问题:

  • 我遗失的任何其他中间步骤?
  • 还有其他更好的例子吗?

2 个答案:

答案 0 :(得分:1)

这就是我解决自己问题的方法。

  • 使用完整的jabber ID(包括资源)

  • 由于smack库不了解Custom IQ Stanzas的实现 拥有IQProvider,过滤并准确添加您的连接 解释here

答案 1 :(得分:0)

您需要发送自己的<presence type="subscribe" to="alice@wonderland.lit"/>或需要在其他用户的名单中:

参考:here

OR

Deny messages from non-roster users in Openfire