gpt4 book ai didi

java - asmack - 接收自定义 XML 消息 ||

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:27 25 4
gpt4 key购买 nike

我花了一些时间在 android 设备中添加 smack.providers,我的应用程序可以很好地拾取它。我添加了默认的 iqProviders 和 extensionProviders,但我也添加了我的自定义 extensionProvider,如下所示:

<extensionProvider>
<elementName>players</elementName>
<namespace>boxer:players</namespace>
<className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>

我还要介绍 PlayerListProvider 类,目前它只是为了看看它是否会被调用(它不会)——当我知道它被调用时,我会完全实现它,因此至少部分功能有效:

import java.util.List;
import java.util.Map;

import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.provider.EmbeddedExtensionProvider;

import android.util.Log;

@SuppressWarnings("deprecation")
class PlayerListProvider extends EmbeddedExtensionProvider {
protected PacketExtension createReturnExtension(String currentElement, String currentNamespace, Map<String,String> attributeMap, List<? extends PacketExtension> content) {
Log.w("***** AAAAAAAAAAAAAAAAAAAA *******", "0");
return new XMLPlayerList();
}

}



class XMLPlayerList implements PacketExtension {

public String getElementName() {
return "aaaaa";
}

public String getNamespace() {
return "aaaaa";
}

public String toXML() {
return "aaaaa";
}

}

当我运行客户端 android 应用程序时,我收到以下消息:

<message to="eee@localhost" type="chat" id="9" from="admin@localhost">
<body>
&lt;players xmlns="boxer:players" command="playerlist"&gt;
&lt;player&gt;test1&lt;/player&gt;
&lt;player&gt;test2&lt;/player&gt;
&lt;/players&gt;
</body>
<thread>3P0i00</thread>
</message>

我现在的问题是,为什么没有在收到消息时调用 PlayerListProvider (EmbeddedExtensionProvider)。消息包含标签并具有 boxer:player 的命名空间,正如我在 smack.providers 中指定的那样。

有什么想法吗?

最佳答案

在 SO 上阅读类似问题后,我遇到了这个 question/answer还有这个blog post about another way ( part 1 ) ( part 2 ) 实现自定义消息发送/接收。

您是否考虑过使用 PacketExtensionProvider而不是 EmbeddedExtensionProvider

有更详细的解释here ,如果您有兴趣尝试用它代替 EmbeddedExtensionProvider。它可能不是您要找的东西...(它似乎需要更多的手动解析方法),但它可能会让您的 PlayerListProvider 类得到识别(通过扩展 PEPEvent类。)

关于java - asmack - 接收自定义 XML 消息 ||,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934852/

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