Smack:消息触发“格式不正确”异常

Posted

技术标签:

【中文标题】Smack:消息触发“格式不正确”异常【英文标题】:Smack: Message triggering "not-well-formed" exception 【发布时间】:2019-12-30 04:02:05 【问题描述】:

我正在尝试通过 Smack 发送具有以下格式的字符串作为消息:

<STX>1<US>fileID<US>fileName<US>fileSize<US>senderID<US>stringEncodedByteArray<ETX>

我正在生成这样的参数:

String stringEncodedByteArray = Base64.getEncoder().encodeToString(bytes);
String fileID = java.util.UUID.randomUUID().toString();
String STX = Character.toString((char) 2);
String ETX = Character.toString((char) 3);
String US = Character.toString((char) 31);
String fileName = "file1";
String fileSize = "1000";
String senderID = "user1";

现在,当我尝试发送此消息时,我收到以下错误:

org.jivesoftware.smack.AbstractXMPPConnection callConnectionClosedOnErrorListener 警告:连接 XMPPTCPConnection[hemodd2@192.168.123.242/88381984845654635827858] (0) 因错误而关闭 org.jivesoftware.smack.XMPPException$StreamErrorException: not-well-formed 你可以在http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions阅读更多关于这个流错误的含义 格式不正确(令牌无效)

消息格式似乎与 Smack 的内部工作原理发生冲突,因为我可以毫无问题地发送诸如“Hello World”之类的普通消息。我知道我需要重新格式化消息,但我不知道该怎么做。我已经阅读了错误描述中的链接页面,但仍然不明白确切的问题。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

这不是 Smack 告诉您消息格式不正确,而是 XMPP 服务器。这可能是由于使用了 XML 1.0 中不允许的 ASCII 控制字符造成的。

【讨论】:

以上是关于Smack:消息触发“格式不正确”异常的主要内容,如果未能解决你的问题,请参考以下文章

在与 Smack 4.2 重新连接后发送离线消息时,经过身份验证的侦听器出现异常

Oracle 异常未在触发器中捕获

Smack 异常 - 由我的 Java 安装或 Smack 引起

C#:是不是可以获得异常触发器? [复制]

如何在服务总线队列触发功能中将服务总线消息移动到死信

smack / ejabberd 连接超时