Eclipse、Java、および asmack を使用して XMPP チャット クライアント アプリを構築しています。チュートリアルと多くの Google 検索を使用して、バディ リストを機能させることができました。実際のチャットも正常に機能します。私の問題は、連絡先リストに追加する仲間を探すことです。送信する XML の例を次に示します: http://xmpp.org/extensions/xep-0055.html 私の要求は:
<iq
id="search123"
from="name3@webserv.xxx.com/name3"
to="search.xxx.zzz.com"
type="set" >
<query xmlns="jabber:iq:search" >
<nick>
android
</nick>
</query>
</iq>
私が得ていると思った応答は次のとおりです。
<iq
id="search123"
from="search.xxx.zzz.com"
to="name3@webserv.telebroad.com/Smack"
type="result" >
</iq>
ただし、connConfig.setDebuggerEnabled(true); を使用します。(およびオンラインの Telnet クライアント) サーバーが実際に正しく動作しており、要求された結果を送信していることを確認できましたが、上記の内容を取得しているだけです。私はこれに 4 日間携わっていますが、私の自尊心はかなり低いです :P IQ リクエストとレスポンスに関する私のコードは次のとおりです。
Packet asdf = new Packet() {
@Override
public String toXML() {
return "<iq type='set'"+
" from='name3@webserv.xxx.com/name3'"+
" to='search.xxx.zzz.com'"+
" id='search2'"+
" xml:lang='en'>"+
" <query xmlns='jabber:iq:search'>"+
" <nick>Android</nick>"+
" </query>"+
" </iq>";
}
};
ChatList.connection.sendPacket(asdf);
Log.e("packet", "request = "+ asdf.toXML());
PacketFilter filter = new IQTypeFilter(IQ.Type.RESULT);
ChatList.connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
IQ iq = (IQ)packet;
Log.e("response","incoming packet : "+ packet.toXML());
Log.e("response","incoming packet2 : "+ packet.toString());
}
}, filter);
多くの TypeFilter を試しましたが、役に立ちませんでした。私は困惑しています!
結論:
1.リクエストがサーバーによって正しく受け入れられている;
2.サーバーの応答は正しいです(デバッガーはそう言います);
3. 任意の response.toString または toXML は、上記のタイプ結果 XML を出力します (type='result'>.
4.このアプリの最終ビルドが約 1 週間遅れています...助けてください! :)