2012-03-26 5 views
3

asmackライブラリを使用してvCardを取得しています。私はそれをしようとした私は、vCardのを取得することができていますが、応答は私が必要とまさにではない、それだけで応答asmackを使用してvCardから正確な応答が得られません

<iq id="3842p-8" to="[email protected]" type="get"> 
           <vCard xmlns='vcard-temp'><FN>Lalit Poptani</FN> 

を与えるhere

を示すように、予想される応答は、ユーザーに関する完全な詳細/情報です以下のように、

VCard vCard = new VCard(); 
try { 
     ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", 
                  new VCardProvider()); 
     vCard.load(conn, user); 
     Log.d("Vcard XML", vCard.toXML()); 
    } catch (XMPPException e) { 
     e.printStackTrace(); 
    } 

私も必要thatsのthis answer設定するすべてのものを使用してみました。だから、ユーザーのvCardの完全なxmlを取得するためにさらに必要なことはありますか?

+0

Hmn。私はあなたがまったく同じ方法でクエリを実行しているのを見ています(これは別のSOユーザーのために働いていたようです)(http://stackoverflow.com/questions/8355684/asmack-not-loading-vcard)。唯一の問題は、最初の入力後に出力が途切れているように見えることです。 [このスレッド](http://code.google.com/p/asmack/issues/detail?id=14)はまったく役に立ちますか? – MrGomez

+0

コメントをいただきありがとうございますが、私はすでにそれもチェックしていましたが、うまくいきませんでした。 –

+0

非常に奇妙です。しかし、「Log.d」は本当にすべてのXMLを印刷しているのだろうか?デバッガに接続すると、この問題について何か言わなければならないのですか? – MrGomez

答えて

1

デバッグウィンドウ(-Dsmack.debugEnabled = true)をオンにして、サーバーから生スタンザを受け取ることができる単純なJavaアプリケーション(アンドロイドなし)で通常のSmackを使用して試してください。これは少なくとも、スタンザが正しいことを確認するでしょう。そうでない場合は、サーバーに問題があります。クライアントがストリームを解析できないため、不正なスタンザが通常は接続を終了させるため、これは起こりそうにないと思います。

正しい場合は、プロバイダ自体に問題がある可能性があります。ドキュメントによれば、SmacksのVCard class is incompleteによれば、返される情報は単に解析されるフィールドのリストにない可能性があります。

返されたスタンザを知ることで、これを簡単に確認できます。

asmackはSmackから派生しているため、この特定のケースではまったく同じように動作するはずです(ほとんどすべてのケースが実際に動作します)。

+0

Aaahhh !!!おかげで、 'mConfiguration.setDebuggerEnabled(true);'が適用され、動作しました;) –

+0

どうしたらうまくいったのですか? – Tijme

関連する問題