android– 如何在XMPP节数据包的元素中添加自定义字段?

android– 如何在XMPP节数据包的元素中添加自定义字段?,第1张

概述我想发送<messageid="qm5Dx-8"to="abc"type="chat"from="abc"msgType="2"msgTimeStamp="1413971599039"fileSize="18MB"fileHeight="300"fileWidth="300"

我想发送

<message ID="qm5Dx-8" to="abc" type="chat"  from="abc" msgType="2" msgTimeStamp="1413971599039" fileSize="18 MB"  fileHeight="300" fileWIDth="300" thumbnail="abc" mediaURL="" serverMediaURL="xyz" isFromMe="1" status="1"><body>Image</body><request xmlns='urn:xmpp:receipts'/></message>

我构建自定义消息的方式是:

public class MyCustomMessage  extends Message{    public MyCustomMessage(){        super();    }    public MyCustomMessage(String to, Type type){        super(to, type);    }    private String msgType ;    private String msgTimeStamp ;    private String isFromMe ;    private String status ;    private String mediaURL ;    private String serverMediaURL ;    private String fileSize ;    private String fileHeight ;    private String fileWIDth ;    private String thumbnail ;    @OverrIDe    public String toXML() {        String XMLMessage = super.toXML();        String XMLMessage1 = XMLMessage.substring(0, XMLMessage.indexOf(">"));        String XMLMessage2 = XMLMessage.substring(XMLMessage.indexOf(">"));        if (this.msgType != null) {            XMLMessage1 += " msgType=\"" + this.msgType + "\"";        }        if (this.msgTimeStamp != null) {            XMLMessage1 += " msgTimeStamp=\"" + this.msgTimeStamp + "\"";        }        if (this.fileSize != null) {            XMLMessage1 += " fileSize=\"" + this.fileSize + "\"";        }        if (this.fileHeight != null) {            XMLMessage1 += " fileHeight=\"" + this.fileHeight + "\"";        }        if (this.fileWIDth != null) {            XMLMessage1 += " fileWIDth=\"" + this.fileWIDth + "\"";        }        if (this.thumbnail != null) {            XMLMessage1 += " thumbnail=\"" + this.thumbnail + "\"";        }        if (this.mediaURL != null) {            XMLMessage1 += " mediaURL=\"" + this.mediaURL + "\"";        }        if (this.serverMediaURL != null) {            XMLMessage1 += " serverMediaURL=\"" + this.serverMediaURL + "\"";        }        if (this.isFromMe != null) {            XMLMessage1 += " isFromMe=\"" + this.isFromMe + "\"";        }        if (this.status != null) {            XMLMessage1 += " status=\"" + this.status + "\"";        }        return XMLMessage1 + XMLMessage2;    }// Setters Getters of all these fIElds..}

然后在SmackableImplement类中添加必填字段后,我调用mXMPPConnection.sendPacket(customMessage);

但我没有收到任何包裹.调用此方法后,每次关闭我的连接.我已经完成了许多教程,但无法找到任何解决方案……告诉我哪里错了.

解决方法:

> Smack肯定有一种更好的XML处理方法,而不是修改字符串表示的方法.当任何包含“或任何其他需要作为属性转义的其他字符时,这将会严重破坏.
>您必须将自定义有效负载作为消息中的单独XML元素添加到消息中,而不是作为消息上的属性.您的XML应如下所示:

 <message ID="qm5Dx-8" to="abc" type="chat" from="abc">    <body>Image</body>    <request xmlns='urn:xmpp:receipts'/>    <data xmlns='@R_403_6822@://bstkaal/custom/data'      msgType="2"      msgTimeStamp="1413971599039"      fileSize="18 MB"       fileHeight="300"      fileWIDth="300"      thumbnail="abc"      mediaURL=""      serverMediaURL="xyz"      isFromMe="1"      status="1" /></message>
总结

以上是内存溢出为你收集整理的android – 如何在XMPP节/数据包的元素中添加自定义字段?全部内容,希望文章能够帮你解决android – 如何在XMPP节/数据包的元素中添加自定义字段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1110712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存