gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:30 24 4
gpt4 key购买 nike

我要送

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

但是我没有收到任何数据包。每次调用此方法后,我的连接都会被关闭。我已经阅读了很多教程,但找不到任何解决方案...告诉我哪里错了。

最佳答案

  1. Smack 肯定有比这种修改字符串表示的方法更好的方法来处理 XML。当任何内容包含 " 或任何其他需要作为属性转义的字符时,这将严重中断。

  2. 您必须将自定义负载作为消息中的单独 XML 元素添加到消息中,而不是作为消息的属性。您的 XML 应如下所示:

     <message id="qm5Dx-8" to="abc" type="chat" from="abc">
    <body>Image</body>
    <request xmlns='urn:xmpp:receipts'/>
    <data xmlns='http://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 节/数据包的 <message> 元素中添加自定义字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26507753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com