我正在使用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?
答案 0 :(得分:1)
在一个简单的Java应用程序(没有android)中使用常规Smack尝试使用它可以打开调试窗口( -Dsmack.debugEnabled = true ),这将为您提供从原始节点接收的原始节点服务器。这至少会证实该节是正确的。如果他们不是,那么你有服务器问题。我认为这不太可能,因为格式错误的节通常会导致连接终止,因为客户端无法解析流。
如果它们是正确的,那么提供商本身可能存在问题。根据文档,Smacks'VCard class is incomplete,因此返回的信息可能根本不在解析的字段列表中。
知道返回的节将更容易验证这一点。
asmack派生自Smack,所以在这种特殊情况下它应该表现得完全相同(实际上大多数情况都是如此)。