在Android上使用aSmack发送和接收自定义XMPP IQ
作者:互联网
背景:
我在Android上使用aSmack for XMPP实现了一对一聊天.我也能够发送和接收IQ消息.
问题是:
我无法发送和接收自定义IQ消息.例如,如果我想发送智商
<iq type='get'
to='ssmack@web.mystudios.com/mack'>
<query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>
aSmack适用于这个IQ,因为它不是自定义的,但是如果我将这里的名称空间从disco#items更改为Match它将无法正常工作它将向服务器发回响应说明
<error code='503'
type='cancel'>
<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
这个回复是从我的客户发送的.但我试图调试它,我在所有接收和发送数据包代码上放置了断点.但它没有进入那里.
我接收数据包的代码是:
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet p) {
// TODO Auto-generated method stub
String fromName1 = StringUtils.parseBareAddress(p.getFrom());
Log.i("XMPPClient", "Got text [" + p.toXML() + "] from [" + fromName1 + "]");
m1=p.getFrom();
mHandler.post(new Runnable() {
public void run() {
setListAdapter();
recieve.setText(m1);
}
});
我想我需要添加一些监听器来获取自定义响应.有人可以指导我完成吗?
解决方法:
代码不完整. addPacketListener()接受两个参数.
我怀疑你没有在接收端注册自定义IQ的提供者,这就是为什么它返回< service-unavailable xmlns ='urn:ietf:params:xml:ns:xmpp-stanzas'/>
您可能想要阅读一些文档:
> Provider Architecture: Packet Extensions and Custom IQ’s
> Brief Tutorial on IQ Providers
标签:asmack,android,xmpp 来源: https://codeday.me/bug/20191003/1847994.html