3

asmackライブラリを使用して vCard を取得しています。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

サーバーから受信した生のスタンザを提供するデバッグ ウィンドウ ( -Dsmack.debugEnabled=true ) をオンにできる単純な Java アプリ (Android なし) で通常の Smack を使用してみてください。これにより、少なくともスタンザが正しいことが確認されます。そうでない場合は、サーバーに問題があります。クライアントがストリームを解析できないため、不正なスタンザは通常接続を終了させるため、これはありそうもないと思います。

それらが正しい場合は、プロバイダー自体に問題がある可能性があります。ドキュメントによると、Smacks のVCard クラスは不完全であるため、返される情報が解析されるフィールドのリストに含まれていない可能性があります。

返されたスタンザを知ることで、これを確認しやすくなります。

asmack は Smack から派生しているため、この特定のケース (実際にはほとんどすべてのケース) ではまったく同じように動作するはずです。

于 2012-03-29T22:11:01.827 に答える