2016-08-05 55 views
2

這是用於獲取名冊如何使用smack庫將自定義IQ節發送給其他用戶?

<iq from="[email protected]/pda" id="rr82a1z7" 
type="get"> 
    <query xmlns="jabber:iq:roster"/> 
</iq> 

從這standard specification樣品IQ節,IQ節可以通過設置「TO」屬性被引導到特定的用戶,以便XMPP服務器將在IQ節轉發到JID (完整的Jabber ID)在 「TO」 屬性指定,check specification

但是,當我查詢IQ節,適合我的需要,這

<iq from="[email protected]/pda" id="rr82a1z7" 
to="[email protected]/Smack" 
type="get"> 
    <UserDetails xmlns="http://www.test.org/User/"> 
     <userName>username</username> 
    </UserDetails> 
</iq> 

詩節被轉發到「愛麗絲夢遊@ wond erland.lit「,但是我收到了來自Openfire服務器的錯誤條件」feature-not-implemented「的IQ Stanzs。

有什麼辦法擺脫這個錯誤,並得到結果?

我按照此tutorial生成客戶端。

我可以看到正在接收的自定義Stanza的wireshark痕跡,但看不到「myIQListener」被調用?

問題:

  • 任何其他我很想念中間步驟?
  • 還有其他更好的例子嗎?
+0

要發送節到另一個花名冊,您需要在花名冊訂閱列表中。 –

+0

@GirishKumar aha,感謝您的信息,我將驗證 –

+0

該示例工作正常,這是名稱空間中的拼寫錯誤,需要整整一天才能解決。再一次證明,檢查自己的代碼錯別字應該是第一優先,而不是感到不安全的知識,你有:) –

回答

1

這是我如何解決我的自己的問題。

  • 採用完整的Jabber ID(包括資源)

  • 由於嫌庫不理解自定義IQ節實現 自己IQProvider,過濾器,並將其添加您的連接,恰好 解釋here

0

您需要發送自己<presence type="subscribe" to="[email protected]"/>或需要在其他用戶的名單列表:

參見:here

OR

Deny messages from non-roster users in Openfire

+1

我已經驗證,並在wireshark的痕跡,我可以看到openfire XMPP服務器轉發請求到客戶端地址(全Jabber ID),甚至在本規範https://tools.ietf.org/html/rfc6120#page-105中,它規定「除非該消息被髮送到已連接客戶端帳戶的純粹JID」 。收到 帶'to'地址的消息節後,服務器應該嘗試 路由或將其發送給目標收件人(關於 的 與XML節相關的一般路由和傳送規則,請參見第10節)「 –

相關問題