2012-02-01 3 views
1

Я сделал именно то, что предложил ответ (Asmack not loading VCard), но он все еще не работает. Выход DEBUG показывает, что Smack принимает пакет с информацией VCard, но затем генерирует ClassCastException в https://github.com/rtreffer/smack/blob/master/source/org/jivesoftware/smackx/packet/VCard.java#L548, и все, что я получаю, это «Нет VCard для xxx @ xxx».asmack - не могу прочитать VCard

Мой код:

public VCard getUserVCard() throws XMPPException { 
    VCard userVCard = new VCard(); 
    userVCard.load(connection); 
    return userVCard; 
} 

И некоторые предыдущие инициализации:

ConnectionConfiguration config = new ConnectionConfiguration(OF_HOST, OF_PORT, OF_SERVICE_NAME); 
config.setDebuggerEnabled(true); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
ProviderManager.getInstance().addIQProvider("vCard ", "vcard-temp", new org.jivesoftware.smackx.provider.VCardProvider()); 
connection = new XMPPConnection(config); 
this.context = context; 
try { 
    connection.connect(); 
} catch (XMPPException e) { 
    // TODO Auto-generated catch block 
     e.printStackTrace(); 
} 

Информация VCard в базе данных в порядке - только окончательное литье не удается. Какие-либо предложения?

+0

Один комментарий - если я использую VCardProvider напрямую, я могу создать VCard из строки: 'String vCardString = prefs .getString (UserPreferences.USER_VCARD, null); userVCard = VCardProvider.createVCardFromXML (vCardString); ' – PawelPredki

+0

Вы пробовали использовать другой метод' userVCard.load (connection, user); ', пользователь, являющийся идентификатором пользователя, которого вы хотите получить vCard (т. Е. Ваш id в этом случае)? Я не знаю, будет ли это работать лучше, но это тот, который я использую с успехом. – Guillaume

+0

Я тоже это пробовал, и результат был похож. Данные VCard извлекаются с сервера, но он не анализируется как объект VCard с помощью asmack. – PawelPredki

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^