2011-12-02 77 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