我正在开发一个Android应用程序,我需要在其中实现XMPP,所以我使用asmack。
我需要回复来自服务器的disco#info
请求。我想创建一个类似的响应:
<iq id="123" type="result" to="x" from="y">
<xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" type="bot" name="oo" uid="{1111-2222-3333}"/>
<feature var="urn:xmpp:ping"/>
<feature var="jabber:iq:version">
<feature var="bb" version="123"/>
</iq>
问题在于我不知道如何在功能中添加uid
和版本。
我已经做了一些事情:
ServiceDiscoveryManager discoManager =ServiceDiscoveryManager.getInstanceFor(connection);`
discoManager.setIdentityName("oo");
discoManager.setIdentityType("bot");
discoManager.addFeature("urn:xmpp:ping");
discoManager.addFeature("bb");
请帮助我。
答案 0 :(得分:1)
我找到了解决方案,无法在身份或功能中添加其他内容。 要向迪斯科信息响应添加信息,您可以向您的discomanager添加扩展信息:
//Add uid
DataForm Data = new DataForm("result");
FormField fielduid = new FormField("name");
fielduid.setLabel("System UID");
fielduid.addValue(randomUUID);
Data.addField(fielduid);
discoManager.setExtendedInfo(Data);
答案 1 :(得分:0)
好吧,我不知道Android开发的任何内容,但看起来你在第三个功能声明上缺少/
来关闭该行
你的专栏:
<feature var="jabber:iq:version">
我建议:
<feature var="jabber:iq:version"/>