gpt4 book ai didi

android - (a)Smack 的 IQ.toXml() 返回没有自定义子元素的 XML

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:40 25 4
gpt4 key购买 nike

我在 android 项目中使用最新版本的 asmack (asmack-android-8-source-0.8.3) 并且我有以下代码:

connection.addPacketListener(new PacketListener()
{
@Override
public void processPacket(Packet p)
{
if(p.getPacketID().equals("v3"))
{
Log.e("TAG", p.toXML());
}
}
}, new IQTypeFilter(IQ.Type.RESULT));


Packet iq = new Packet()
{
@Override
public String toXML()
{
String str = "<iq type='get' id='v3'><getservertime xmlns='urn:xmpp:mrpresence'/></iq>";
Log.e("TAG", str);
return str;
}
};

//sends <iq type='get' id='v3'><getservertime xmlns='urn:xmpp:mrpresence'/></iq>
connection.sendPacket(iq);

在调试器中,响应正常,这是预期的:

<iq type="result" id="v3" to="minimaal@mrserver/Smack">
<servertime xmlns="urn:xmpp:mrpresence" utc="2013-06-28T11:45:32.380Z" local="2013-06-28T07:45:32.380Z"/>
</iq>

但是 package listner 中的 p.toXML() 标签“servertime”丢失了:

<iq id="v3" to="minimaal@mrserver/Smack" type="result"></iq>

对我做错了什么有什么建议吗?

最佳答案

<servertime/> 是自定义子元素,Smack 不知道。解析节时它会被忽略。您需要通过创建一个需要向 PacketExtension 注册的新 ProviderManager 让 Smack 知道该元素。

您可以在 Smack 关于 Provider Architecture 的文档中阅读更多相关信息。

关于android - (a)Smack 的 IQ.toXml() 返回没有自定义子元素的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17364577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com