我正在使用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