无法使用 Smack 创建 MultiUserChat:接收 SmackException$NoResponseException:在回复中未收到响应

Posted

技术标签:

【中文标题】无法使用 Smack 创建 MultiUserChat:接收 SmackException$NoResponseException:在回复中未收到响应【英文标题】:Unable to create MultiUserChat with Smack: receiving SmackException$NoResponseException: No response received within reply 【发布时间】:2016-05-13 08:01:03 【问题描述】:

创建组时出现异常: "SmackException$NoResponseException: 在回复中没有收到回复"

这是组创建方法,回复时间设置为 50 秒。 我可以登录,一对一聊天。 但是在尝试创建一个组时,在 muc.create(nick); 上获得以下异常;

public void createGroup() 

    String roomId = "Group_test003" + "@iscoveri.com";
    String nick = "Grouptest";

    try 

 manager = MultiUserChatManager.getInstanceFor(xmppCON);

        MultiUserChat muc = manager.getMultiUserChat(roomId);

        muc.create(nick);

        Form form = muc.getConfigurationForm();

        Form submitForm = form.createAnswerForm();

        List<FormField> fields = form.getFields();
        for (int i = 0; i < fields.size(); i++) 
            FormField field = (FormField) fields.get(i);
            if (!FormField.Type.hidden.equals(field.getType()) && field.getVariable() != null) 

                submitForm.setDefaultAnswer(field.getVariable());
            
        

        List owners = new ArrayList();
        owners.add("8017037677" + "@iscoveri.com");
        submitForm.setAnswer("muc#roomconfig_roomowners", owners);

        muc.sendConfigurationForm(submitForm);

     catch (XMPPException e) 
        e.printStackTrace();
     catch (SmackException.NoResponseException e) 
        e.printStackTrace();
     catch (SmackException.NotConnectedException e) 
        e.printStackTrace();
     catch (SmackException e) 
        e.printStackTrace();
    


【问题讨论】:

【参考方案1】:

MultiUserChat 在用户加入之前不会创建。

所以在 sendConfiguration 之后你需要加入 muc:

muc.join("8017037677@iscoveri.com");

编辑:顺便说一句,请确保在您的服务器中注册了一个有效的服务子域。

【讨论】:

如果muc.create(nick); 先超时,这甚至都不可能。 @Haroldo_OK 设置一个更高的超时时间,默认是3秒,你可以试试15

以上是关于无法使用 Smack 创建 MultiUserChat:接收 SmackException$NoResponseException:在回复中未收到响应的主要内容,如果未能解决你的问题,请参考以下文章

SmackInitialization:无法确定 Smack 版本

如何使用 Smack XMPP 库创建 SSL 连接?

如何使用 smack(java) 创建、发送和接收 iq 数据包

无法在 JAVA 中使用 SMACK api 显示收到的消息

无法通过 Smack API 使用 openfire 服务器发送/接收消息

XMPP 注销(Smack API)