2015-07-10 2 views
0

Я использую библиотеку smack.jar. Я пытался осуществить групповой чат, используя XMPP в Android с помощью этого кода:Исключение исключение из сервера в групповом чате с использованием smack в android

MultiUserChat muc = new MultiUserChat(connection,groupName+"@"+Utils.SERVER_NAME); 
    muc.create("nickname1"); 

    Form form = muc.getConfigurationForm(); 
    Form submitForm = form.createAnswerForm(); 
    for (Iterator fields = form.getFields();fields.hasNext();){ 
     FormField field = (FormField) fields.next(); 
     if(!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable()!= null){ 
      submitForm.setDefaultAnswer(field.getVariable()); 
     } 
    }    
    submitForm.setAnswer("muc#roomconfig_publicroom", true); 
    muc.sendConfigurationForm(submitForm); 
    muc.join("nickname1"); 

получает исключение типа «нет ответа от сервера». Кто-нибудь знает, как это исправить?

+0

Какая ценность Utils.SERVER_NAME? –

+0

IP-адрес/имя хоста сервера openfire. –

+0

Я нашел решение, заменив smack.jar файл asmack.jar и разместив SmackAndroid.init() в начале кода. –

ответ

1

У меня была такая же проблема, потому что я использовал доменное имя chat.localhost. Убедитесь, что у нас есть conference как субдомен в multiUserManager.getMultUserChat("[email protected]");

А также важно использовать ProviderManager для IQ и PacketExtension цели.

public static void configure(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 IBBProviders.Open()); 

    pm.addIQProvider("close", "http://jabber.org/protocol/ibb", 
      new IBBProviders.Close()); 

    pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", 
      new IBBProviders.Data()); 

    // 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()); 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^