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

时间:2019-12-30 04:02:05

标签: java formatting xmpp string-formatting smack

我正在尝试通过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调用ConnectionConnectiondOnErrorListener   警告:连接XMPPTCPConnection [hemodd2@192.168.123.242/88381984845654635827858](0)已关闭,但出现错误   org.jivesoftware.smack.XMPPException $ StreamErrorException:格式不正确您可以在http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions上详细了解此流错误的含义   格式不正确(令牌无效)

该消息格式似乎与Smack的内部工作方式发生冲突,因为我可以正常发送诸如“ Hello World”之类的消息,而没有任何问题。我知道我需要重新格式化消息,但是我不知道该如何处理。我已阅读错误说明中的链接页面,但仍然不了解确切的问题。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

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