2011-12-02 20 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]"); 

を行うと、すべての情報がnullに設定され、私はでXMLを見しようとするとされVCard.toXML()メソッドを呼び出して、私はちょうどこの

<iq id="I17sI-4" to="[email protected]" type="get"><vCard xmlns='vcard-temp'/></iq> 

のような空のXMLだから誰もが私が間違っている場合や、やっていることを知っているだ、このバイナリRサーバーから受信したVCardを解析できないelease?

+1

これを試してみてください。 'ProviderManager.getInstance()addIQProvider( "vCardの"、 "vCardの-TEMP"、新VCardProvider());' がasmackわからない、定期的にピシャリために働く必要があります... – Maggie

+0

おかげマギー。 ! vCardをロードしようとする前にその行を挿入すると問題が解決しました;-) – momo

+0

私は答えとして書くので、それを受け入れることができます:) – Maggie

答えて

4

行を追加:vCardをロードする前にProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());を追加してください。

+0

vcardを取得するのを手伝ってください –

+0

@SubbaReddyPolamReddy何が問題ですか? – Maggie

+0

@Maggieあなたは私に言うことができる理由 ' のvCard vCardの-一時 がorg.jivesoftware.smackx.provider.VCardProvider' smack.providerで動作しません – Hunt