3

我正在使用asmack库检索 vCard。我能够检索电子名片,但响应并不完全符合我的要求,它只给出响应

<iq id="3842p-8" to="lalit3686.android@gmail.com" type="get">
                                <vCard xmlns='vcard-temp'><FN>Lalit Poptani</FN>

预期的响应是有关用户的完整详细信息/信息,如下所示

我试过如下,

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

我也尝试过使用这个答案来配置所需的一切。那么,是否需要进一步检索用户 vCard 的完整 xml?

4

1 回答 1

1

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

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

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

asmack 是从 Smack 派生的,因此在这种特殊情况下(实际上大多数情况下)它的行为方式应该完全相同。

于 2012-03-29T22:11:01.827 回答