我正在使用Asmack的二进制版本(我会在第一次尝试时遇到问题时立即构建它)。我还建立了自己的ejabberd服务器。
当我尝试加载一些联系人VCard时,服务器返回信息,但是Asmack似乎不喜欢它(或者无法解析它)。
这是我在调试模式中可以看到的:
<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>
但是当我做的时候
VCard card = new VCard();
card.load(xmppConn, "user@domain");
所有信息都设置为null,当我尝试通过调用VCard.toXML()方法查看XML时,我得到了一个像这样的空XML
<iq id="I17sI-4" to="user@domain" type="get"><vCard xmlns='vcard-temp'/></iq>
所以任何人都知道我做错了什么,或者这个二进制版本是否无法解析从服务器收到的VCard?
答案 0 :(得分:4)
在加载vCard之前添加行:ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
。