我正在使用Asmack的二进制版本(我将尽快建立它,因为我第一次尝试时遇到问题)。我也建立了自己的ejabberd服务器。Asmack not loading VCard
当我尝试加载一些联系人VCard服务器返回信息,但Asmack似乎并不喜欢它(或不能解析它)。
这是我可以在调试模式下看到:
<iq from='[email protected]' to='[email protected]/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>[email protected]</USERID>
</EMAIL>
</vCard>
</iq>
但是当我做
VCard card = new VCard();
card.load(xmppConn, "[email protected]");
所有的信息被设置为空,当我尝试一下XML通过调用VCard.toXML()方法,我刚刚得到一个空的XML这样
<iq id="I17sI-4" to="[email protected]" type="get"><vCard xmlns='vcard-temp'/></iq>
因此,任何人知道我做错了,或者这个二进制[R elease不能解析从服务器接收到的VCard?
试试这个: 'ProviderManager.getInstance()addIQProvider( “电子名片”, “名片-TEMP”,新VCardProvider());' 应该适用于经常嫌,不是asmack知道... – Maggie
感谢玛吉!在尝试加载vCard之前插入该行解决了问题;-) – momo
我将它写为答案,所以你可以接受它:) – Maggie