我正在使用 asmack 检索 vCard图书馆。我能够检索 vCard,但响应并不完全符合我的要求,它只给出响应
<iq id="3842p-8" to="lalit3686.android@gmail.com" type="get">
<vCard xmlns='vcard-temp'><FN>Lalit Poptani</FN>
预期的响应是有关用户的完整详细信息/信息,如图所示 here
我试过如下,
VCard vCard = new VCard();
try {
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp",
new VCardProvider());
vCard.load(conn, user);
Log.d("Vcard XML", vCard.toXML());
} catch (XMPPException e) {
e.printStackTrace();
}
我也尝试过使用 this answer配置所需的一切。那么,是否需要进一步检索用户 vCard 的完整 xml?
最佳答案
在一个简单的 Java 应用程序(非 Android)中使用常规 Smack 尝试它,您可以在其中打开调试窗口 (-Dsmack.debugEnabled=true),这将为您提供从服务器。这将至少确认节的正确性。如果不是,则说明您有服务器问题。我认为这不太可能,因为格式错误的节通常会导致连接终止,因为客户端无法解析流。
如果它们是正确的,则可能是提供程序本身存在问题。根据文档,Smacks 的 VCard class is incomplete , 因此返回的信息可能根本不在已解析的字段列表中。
知道返回的节会更容易验证这一点。
asmack 派生自 Smack,因此在这种特殊情况下(实际上大多数情况下)它的行为方式应该完全相同。
关于android - 使用 asmack 无法从 vCard 获得准确的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9867023/