我正在使用 Java 中的 Smack API 连接到我的 XMPP 服务器。
我想像这样发送一个定制的消息包:
<message to="you@MyServer.com" type="chat" MYFIELD="custom stuff">
<body> hi </body>
<CUSTOM_STANZA A="..." B="...">
C="..."
D="..."
</CUSTOM_STANZA>
</message>
我猜想我创建了自己的数据包,它在它的 toXML() 方法中返回了这个 XML。但这似乎不起作用。
如有任何帮助,我们将不胜感激。
最佳答案
我不知道你为什么要给消息添加自定义属性。这在客户端会产生问题,并且可能会导致服务器出现问题,因为它与消息节的架构不匹配。
另一方面,消息内容很容易处理,正如@Femi 所说的那样,使用数据包扩展。您需要创建一个扩展 PacketExtension 的 MyExtension,并且该类中的 toXML() 将返回您的自定义节。
您可以通过以下方式创建和发送自定义消息:
Message message = new Message();
message.addExtension(new MyExtension());
chat.sendMessage(message);
要阅读本节,您需要注册一个 provider ,这将创建并返回您的自定义 PacketExtension。你应该看看 EmbeddedExtensionProvider为此,它会为您处理标签解析,从而简化流程。
关于java - 如何使用 Smack 库发送自定义 XML 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6387947/