Asmack não carrega VCard
Pergunta
Estou usando uma versão binária do Asmack (eu estarei compilando assim que tiver algum tempo, pois tive problemas na primeira vez que tentei).Também configurei meu próprio servidor ejabberd.
Quando tento carregar algum VCard de contato, o servidor retorna a informação, mas Asmack não parece gostar (ou não consegue analisá-la).
Isso é o que posso ver no modo de depuração:
<iq from='user@domain' to='admin@domain/Smack' id='I17sI-4' type='result'>
<vCard xmlns='vcard-temp' prodid='-//HandGen//NONSGML vGen v1.0//EN' version='2.0'>
<FN>Full Name</FN>
<N>
<FAMILY>Surname</FAMILY>
<GIVEN>Nick</GIVEN>
</N>
<NICKNAME>Nickname</NICKNAME>
<URL>http://google.com</URL>
<ADR>
<LOCALITY>lanta</LOCALITY>
<REGION>krabi</REGION>
<PCODE>81150</PCODE>
<CTRY>thailand</CTRY>
</ADR>
<EMAIL>
<USERID>user@domain.com</USERID>
</EMAIL>
</vCard>
</iq>
Mas quando eu faço
VCard card = new VCard();
card.load(xmppConn, "user@domain");
Todas as informações são definidas como nulas e, quando tento examinar o XML chamando o método VCard.toXML (), acabei de obter um XML vazio como este
<iq id="I17sI-4" to="user@domain" type="get"><vCard xmlns='vcard-temp'/></iq>
Então, alguém sabe o que estou fazendo de errado ou se esta versão binária não consegue analisar o VCard recebido do servidor?
Solução
Adicione a linha: ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
antes de carregar o vCard.