Pubsub ノードを使用してサーバーに情報を公開しようとしています。残念ながら、以前に公開されたノードを取得できませんでした。次のリンクの問題と非常によく似ています: http://community.igniterealtime.org/message/ 199690#199690
具体的には、次のようなコード スニペット:
try {
LeafNode node = mPubsub.getPEPNode(USEINFONODE,mFrom);
if(null != node){
List<Item> items = node.getItems();
Log.i("items",items.toString());
}
} catch (XMPPException e) {
Log.e("userInfoExtension","error : and the error is " + e.toString());
}
出力エラーはサーバーからの応答がありません。
デバッグの出力は次のようになります。
<iq id="B9tI0-4" to="pubsub.mymachine" type="get"><query xmlns="http://jabber.org/protocol/disco#info" node="theNode"></query></iq>
<iq id="B9tI0-5" to="pubsub.mymachine" type="get"><pubsub xmlns="http://jabber.org/protocol/pubsub"><items node='theNode'/></pubsub></iq>
ただし、上記のリンクによると、予想される iq スタンザは次のようになります。
<iq type='get'
from='notifyserver@mymachine'
to='pubsub.mymachine'
id='items1'>
<query xmlns='http://jabber.org/protocol/disco#items'
node='theNode'/>
</iq>
そのため、iq スタンザの from フィールドを見逃していることがわかります。どうすれば from ='client@server' を iq スタンザに入れることができるのでしょうか。asmack-android-7.jar 、 asmack-android-7-beem.jar asmack-android-16-beem.jar を含む asmack ライブラリを試しましたが、すべて失敗しました。
誰でもこれを手伝ってもらえますか?どうもありがとう。
パケットの受信に関係があることがわかりました。実際に必要なパケットを受信しましたが、問題は、パケットがどこかで smack によって処理されない可能性があり、サーバー例外からの応答がスローされないことです。だから私は問題が実際に着信パケットを正しく受信していないと思います。私の他の質問でもそうです:
http://stackoverflow.com/questions/14357707/how-to-send-and-listen-to-custom-xmpp-presence-packet-with-asmack-the-library