xml - 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 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”之类的正常消息。我知道我需要重新格式化消息,但我不知道该怎么做。我已经阅读了错误描述中的链接页面,但仍然不明白确切的问题。任何帮助表示赞赏。
解决方案
那不是 Smack 告诉您消息格式不正确,而是 XMPP 服务器。这可能是由于使用了 XML 1.0 中不允许的 ASCII 控制字符造成的。
推荐阅读
- java - 条件计数总查询
- r - 从数字序列中获取咒语和统计数据
- javascript - angularjs选择ui材质标题不变但选择了对象
- postgresql - 如何每天将表数据从 RDS Postgres 同步到另一个 RDS Postgres 数据库
- xamarin - 如何在 Xamarin Android 中为底部导航栏实现新的 SetOnItemSelectedListener
- reactjs - 我可以将同一个文档发布到 Firebase 中的 2 个不同的集合吗?
- javascript - 如何验证输入 SSN 验证字段
- python - 将多个文件导入熊猫
- javascript - Prettier 在 [myVariable] 之前添加一个分号
- java - 使用泛型进行子类型化