如何使用 Smack Android 库将 XMPP IQ 节发送到服务器?

Posted

技术标签:

【中文标题】如何使用 Smack Android 库将 XMPP IQ 节发送到服务器?【英文标题】:How to send XMPP IQ stanza using Smack Android library to server? 【发布时间】:2017-10-04 05:36:47 【问题描述】:

我想使用 Smack android 库将以下 IQ 节发送到 Ejabberd XMPP 服务器。如何发送?

<iq from='hag66@shakespeare.example'
    to='coven@muc.shakespeare.example'
    type='set'
    id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>   

     <subscribe xmlns='urn:xmpp:mucsub:0'
             nick='mynick'
             password='roompassword'>
    <event node='urn:xmpp:mucsub:nodes:messages' />
    <event node='urn:xmpp:mucsub:nodes:affiliations' />
    <event node='urn:xmpp:mucsub:nodes:subject' />
    <event node='urn:xmpp:mucsub:nodes:config' />  
  </subscribe> 
  </iq>

我想订阅 MUC/Sub 活动,如https://docs.ejabberd.im/developer/xmpp-clients-bots/proposed-extensions/muc-sub/中所述

【问题讨论】:

嘿!你实施了吗?如果是,那么请也指导我.. 嗨@Abdul Momen Khan ..不,我没有......你实施的目的是什么? 我需要实现 mucsub.... 好的..您想构建什么功能?...比如多用户聊天? @Abdul Momen Khan 是的多用户聊天子,在 ejjabered 中启用 .. 【参考方案1】:

我已经使用以下代码,请检查可能对您有帮助。

     try 
                IQ iq=new IQ("mynick","urn:xmpp:mucsub:0") 
                    @Override
                    protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) 
                        xml.setEmptyElement();
                        return xml;
                    
                ;
                iq.setType(IQ.Type.get);
                //add your urn:xmpp:muclight:0#affiliations extension element
                iq.addExtension();
                iq.setTo(AppConstants.CHAT_HOSTNAME);
                iq.setFrom(connection.getUser());
                debugLog("ping send stanza:"+iq.toXML());
                connection.sendStanza(iq);
             catch (SmackException.NotConnectedException e) 
                e.printStackTrace();
             catch (InterruptedException e) 
                e.printStackTrace();
            

【讨论】:

以上是关于如何使用 Smack Android 库将 XMPP IQ 节发送到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

(a)Smack:尝试使用 XMPP 登录时,TLS 套接字已关闭

如何在 Android 的 Smack 中接收文件?

如何使用 smack-android 连接到禁用安全功能的 ejabberd?

如何使用 smack-android:4.1.4 在多用户聊天室中解禁用户

如何使用 Smack 从 android 客户端获取 openfire 在线注册用户?

asmack/Smack 4.1 on android 设置