2011-12-02 75 views
1

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

+1

試試這個: 'ProviderManager.getInstance()addIQProvider( 「電子名片」, 「名片-TEMP」,新VCardProvider());' 應該適用於經常嫌,不是asmack知道... – Maggie

+0

感謝瑪吉!在嘗試加載vCard之前插入該行解決了問題;-) – momo

+0

我將它寫爲答案,所以你可以接受它:) – Maggie

回答

4

加載行:ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());加載vCard之前。

+0

請幫助我獲得vcard –

+0

@SubbaReddyPolamReddy是什麼問題? – Maggie

+0

@Maggie你能告訴我爲什麼' 電子名片 虛擬卡,臨時 org.jivesoftware.smackx.provider.VCardProvider'不smack.provider工作 – Hunt