没有得到使用asmack的vCard的确切响应

时间:2012-03-26 05:27:25

标签: android smack asmack

我正在使用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?

1 个答案:

答案 0 :(得分:1)

在一个简单的Java应用程序(没有android)中使用常规Smack尝试使用它可以打开调试窗口( -Dsmack.debugEnabled = true ),这将为您提供从原始节点接收的原始节点服务器。这至少会证实该节是正确的。如果他们不是,那么你有服务器问题。我认为这不太可能,因为格式错误的节通常会导致连接终止,因为客户端无法解析流。

如果它们是正确的,那么提供商本身可能存在问题。根据文档,Smacks'VCard class is incomplete,因此返回的信息可能根本不在解析的字段列表中。

知道返回的节将更容易验证这一点。

asmack派生自Smack,所以在这种特殊情况下它应该表现得完全相同(实际上大多数情况都是如此)。