Не получается получить точный ответ от vCard, используя asmack - PullRequest
3 голосов
/ 26 марта 2012

Я получаю vCard, используя 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();
    }

Я также пытался использовать этот ответ для настройки всего, что этотребуется.Итак, требуется ли что-нибудь еще для получения полной XML-карты vCard пользователя?

1 Ответ

1 голос
/ 30 марта 2012

Попробуйте использовать обычный Smack в простом Java-приложении (без Android), где вы можете включить окно отладки ( -Dsmack.debugEnabled = true ), которое даст вам необработанные строфы, полученные от сервер. Это по крайней мере подтвердит, что строфы верны. Если нет, значит, у вас проблема с сервером. Я думаю, что это маловероятно, поскольку неправильно сформированные разделы обычно приводят к разрыву соединения, поскольку клиент не может проанализировать поток.

Если они верны, то, возможно, проблема в самом провайдере. Согласно документации, класс Smacks VCard является неполным , поэтому возможно, что возвращаемая информация просто отсутствует в списке анализируемых полей.

Знание о возвращенном строфе облегчит проверку этого.

asmack получен из Smack, поэтому он должен вести себя точно так же в данном конкретном случае (в большинстве случаев на самом деле).

...