Xml Smack:消息触发“;“格式不好”;例外

Xml Smack:消息触发“;“格式不好”;例外,xml,xmpp,well-formed,Xml,Xmpp,Well Formed,我正在尝试通过Smack发送以下格式的字符串作为消息: <STX>1<US>fileID<US>fileName<US>fileSize<US>senderID<US>stringEncodedByteArray<ETX> 现在,当我尝试发送此消息时,我收到以下错误: org.jivesoftware.smack.abstractXMPPConnectionCallConnectionClosedonError

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

<STX>1<US>fileID<US>fileName<US>fileSize<US>senderID<US>stringEncodedByteArray<ETX>
现在,当我尝试发送此消息时,我收到以下错误:

org.jivesoftware.smack.abstractXMPPConnectionCallConnectionClosedonErrorListener 警告:连接XMPPTCPConnection[hemodd2@192.168.123.242/88381984845654635827858](0)因错误而关闭 org.jivesoftware.smack.XMPPException$StreamErrorException:格式不正确您可以在以下位置阅读有关此流错误含义的更多信息: 格式不正确(无效令牌)


消息格式似乎与Smack的内部工作产生了冲突,因为我可以发送正常的消息,如“Hello World”,而没有任何问题。我知道我需要重新格式化消息,但我不知道该怎么做。我已经阅读了错误描述中的链接页面,但仍然不理解确切的问题。感谢您的帮助。

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

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";