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?

Foi útil?

Solução

Adicione a linha: ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider()); antes de carregar o vCard.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top