0

我正在尝试通过 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 WARNING: Connection XMPPTCPConnection[hemodd2@192.168.123.242/88381984845654635827858] (0) closed with error org.jivesoftware.smack.XMPPException$StreamErrorException: not-well-formed 你可以阅读更多关于http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions上的此流错误 格式不正确(无效令牌)

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

4

1 回答 1

1

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

于 2019-12-31T07:56:38.683 回答