如何使用 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 套接字已关闭
如何使用 smack-android 连接到禁用安全功能的 ejabberd?
如何使用 smack-android:4.1.4 在多用户聊天室中解禁用户