java - 如何使用 Smack 库发送自定义 XML 数据?

标签 java xml xmpp smack

我正在使用 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/

相关文章:

java - 递增可序列化对象定义的版本 ID 的正当理由是什么?

java - iOS 应用程序中的 JVM 可以运行 Android 应用程序吗?

java - 使用 XPath 解析 XML 字符串数据的问题

c# - 与 SslStream 的 XMPP TLS 连接

ios - XMPP、CoreData - 如何仅加载自身和目标用户消息?

java - springboot 映射下划线到驼峰式大小写无效

Java - 如何通过反射检查数组长度(类中的字段)

java - 在 ArrayList 中存储超过 85000 个字符串

在 C 枚举和 XML 之间转换

java - XMPP 连接池