簡體   English   中英

如何使用SMACK在Android XMPP客戶端中解析自定義花名冊查詢響應

[英]How to parse custom roster query response in Android XMPP client with SMACK

就目前而言,我對XMPP和SMACK的了解很少,因此,如果我的問題不准確,請原諒。

登錄后,我收到帶有花名冊的數據包,如下所示:

<iq id="8CiUQ-1" type="result">
    <query xmlns="jabber:iq:roster">
    <item jid="625126126@saomeapp-test.cloudapp.net" name="Aziez" subscription="both" msgblock="none"/>
    <item jid="547657221@saomeapp-test.cloudapp.net" name="Kmil" subscription="both" msgblock="none"/>
    <item jid="553269257@saomeapp-test.cloudapp.net" name="grzegorz" subscription="both" msgblock="none"/>
    <item jid="683494364@saomeapp-test.cloudapp.net" name="Wiktor2" subscription="both" msgblock="none"/>
    <item jid="602914857@saomeapp-test.cloudapp.net" name="Art" subscription="both" msgblock="none"/>
    <item jid="634926524@saomeapp-test.cloudapp.net" name="ml" subscription="both" msgblock="none"/>
    </query>
</iq>

我知道這一點是因為我可以看到此數據包在SMACK標簽下打印到我的logcat中。

我需要訪問msgblock參數。 org.jivesoftware.smack.RosterEntry類將沒有msgblock參數的getter,因為它是為此服務器實現定制的(我想)。 那我該如何訪問msgblock參數呢?

這是我嘗試過的:

我叫: mConnection.addPacketListener(new RosterPacketListener(), new RosterPacketFilter()); 其中, mConnectionorg.jivesoftware.smack.XMPPConnection;的實例org.jivesoftware.smack.XMPPConnection;

過濾器如下所示:

    private class RosterPacketFilter implements PacketFilter{

        @Override
        public boolean accept(Packet packet) {
            return packet instanceof RosterPacket;
        }
    }

監聽器:

private class RosterPacketListener implements PacketListener {

    @Override
    public void processPacket(Packet packet) {
        Log.d("tag", packet.toXML());
    }
}

我完全不了解的部分是Log.d("tag", packet.toXML()); 不包含msgblock參數。 如何訪問我的花名冊中的msgblock參數?

無需將自定義數據包偵聽器添加到連接對象。

從服務器獲取所有花名冊

Roster roster = mConnection.getRoster();
// collection of RosterEntry from roster object
Collection<RosterEntry> entries= roster.getEntries();

for(RosterEntry entry : entries)
{
    Log.i("RosterName", "Name : "+ entry.getName());
    Log.i("RosterName", "Name : "+ entry.getUser());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM