2013-07-03 64 views
0

我有一個openfire服務器,監控服務插件安裝到存檔聊天消息。從這裏提供XMPP Message Archiving當從監控服務插件檢索聊天時出現501錯誤openfire

鏈接我發送以下節:

<iq type='get' id='juliet1'> 
<list xmlns='urn:xmpp:archive' 
    with='[email protected]'> 
<set xmlns='http://jabber.org/protocol/rsm'> 
    <max>30</max> 
</set> 
</list> 
</iq> 

在我的Android服務使用這個命令:

Packet packet = new Packet() { 
     @Override 
     public String toXML() { 
      String xExtension = "<iq type=\"get\" id=\"juliet1\">"+ 
      "<list xmlns=\"urn:xmpp:archive\""+ 
        " with=\"[email protected]\">"+ 
      "<set xmlns=\"http://jabber.org/protocol/rsm\"><max>10</max></set></list></iq>"; 
      return xExtension; 
     } 
    }; 
    clientApplication.getXmppConnection().sendPacket(packet); 

但不幸的是與服務器回覆:

<iq type="error" to="[email protected]/Smack"><error code="501" type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq> 

hmmmm,那我該如何正確檢索聊天信息呢?

回答

0

我正在使用asmack和openfire進行聊天項目,但是當我嘗試發送文件時,我也得到了錯誤501 ..我在許多帖子上看到提供程序未加載。試試這個,我希望它有幫助。我剛剛解決了我的錯誤501問題。這是一個服務器問題。代理端口。

 configureProvider(ProviderManager.getInstance()); 

    public void configureProvider(ProviderManager pm) { 

    // ---------------------------------------------------------------------------------------- 

    // Private Data Storage 
    pm.addIQProvider("query", "jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider()); 

    // Time 
    try { 
     pm.addIQProvider("query", "jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time")); 
    } catch (ClassNotFoundException e) { 
     Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time"); 
    } 

    // Roster Exchange 
    pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider()); 

    // Message Events 
    pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider()); 

    // Chat State 
    pm.addExtensionProvider("active", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 

    pm.addExtensionProvider("composing", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 

    pm.addExtensionProvider("paused", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 

    pm.addExtensionProvider("inactive", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 

    pm.addExtensionProvider("gone", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider()); 

    // XHTML 
    pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); 

    // Group Chat Invitations 
    pm.addExtensionProvider("x", "jabber:x:conference", new GroupChatInvitation.Provider()); 

    // Service Discovery # Items 
    pm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider()); 

    // Service Discovery # Info 
    pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider()); 

    // Data Forms 
    pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider()); 

    // MUC User 
    pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new MUCUserProvider()); 

    // MUC Admin 
    pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new MUCAdminProvider()); 

    // MUC Owner 
    pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new MUCOwnerProvider()); 

    // Delayed Delivery 
    pm.addExtensionProvider("x", "jabber:x:delay", new DelayInformationProvider()); 

    // Version 
    try { 
     pm.addIQProvider("query", "jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version")); 
    } catch (ClassNotFoundException e) { 
     // Not sure what's happening here. 
    } 

    // VCard 
    pm.addIQProvider("vCard", "vcard-temp", new VCardProvider()); 

    // Offline Message Requests 
    pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); 

    // Offline Message Indicator 
    pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider()); 

    // Last Activity 
    pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider()); 

    // User Search 
    pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider()); 

    // SharedGroupsInfo 
    pm.addIQProvider("sharedgroup", "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); 

    // JEP-33: Extended Stanza Addressing 
    pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new MultipleAddressesProvider()); 

    // FileTransfer 
    pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider()); 

    pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider()); 

    pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new OpenIQProvider()); 
    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new CloseIQProvider()); 
    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new DataPacketProvider()); 

    // Privacy 
    pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider()); 

    pm.addIQProvider("command", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider()); 
    pm.addExtensionProvider("malformed-action", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.MalformedActionError()); 
    pm.addExtensionProvider("bad-locale", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadLocaleError()); 
    pm.addExtensionProvider("bad-payload", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadPayloadError()); 
    pm.addExtensionProvider("bad-sessionid", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadSessionIDError()); 
    pm.addExtensionProvider("session-expired", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.SessionExpiredError()); 
} 
1

試試這個 發送&接收數據包試試這個

if (connection.isConnected()) { 
       connection.login("username", "password");    
       CustomIQ myIQ = new CustomIQ(); 
       myIQ. setType(IQ.Type.SET); 
       myIQ.setTo("[email protected]/Smack"); 
       connection.sendPacket(myIQ); 

//The listener for receiving all the packets from the peer device 
connection.addPacketListener(new PacketListener() { 
       @Override 
       public void processPacket(Packet packet) { 
        if(packet.getClass() == JingleIQ.class) { 
         JingleIQ j = (JingleIQ) packet; 
         System.out.println("packet details"+packet.toXML()+" <---- : [jingle packet] " + j.getSID() + " : " + j.getAction() + " : " + packet.toXML()); 
         System.out.println(" <---- : [jingle packet] " + j.getXmlns()+ " : " + j.getFrom() + " : " + j.getTo()); 
        } 
       }}, 
       new PacketFilter() { 
       @Override 
       public boolean accept(Packet packet) { 
        System.out.println(" <---- : [jingle packet] " + packet.toXML());     
        return true; 
       }}); 


//My custom IQ class 
class CustomIQ extends IQ { 

      public String getChildElementXML() {       
         String request = "<jingle initiator='[email protected]/Smack' sid='1' xmlns='urn:xmpp:jingle:1' action='session-initiate' compatibility='RFC5245'>" 
         +"<content name='video' creator='initiator'>" + 
         "<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='type of file'</description>" + 
         "<transport pwd='fcX/0ZyOQNCBMs6c8H3ZIM' ufrag='L8Y0' xmlns='urn:xmpp:jingle:transports:ice-udp:1'>" +      
         "</transport>" + 
         "</content>" + 
         "</jingle>"; 
         return request; 
     } 
    } 

希望這將幫助你......!

相關問題