8

我正在使用 Xabber 开源项目并且能够创建一个新组,但它总是说:这个房间被锁定,直到配置被确认。我尝试设置默认配置,但它抛出异常:401 未授权。究竟是什么问题。

final MultiUserChat multiUserChat;
        try {
            multiUserChat = new MultiUserChat(xmppConnection, room);
            // CHANAKYA: set default config for the MUC
            // Send an empty room configuration form which indicates that we want
            // an instant room
            try {
                multiUserChat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
            } catch (XMPPException e) {
                e.printStackTrace();
            }
4

2 回答 2

11

我也面临同样的错误。在这里,我修改了代码,它对我有用。当我们调用任何 getConfigurationForm() 而不加入它时,错误 401 不是授权错误。


multiUserChat.join(nickname, password);
setConfig(multiUserChat); // Here I am calling submit form

private void setConfig(MultiUserChat multiUserChat) {

    try {
        Form form = multiUserChat.getConfigurationForm();
        Form submitForm = form.createAnswerForm();
        for (Iterator<FormField> fields = submitForm.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);
        submitForm.setAnswer("muc#roomconfig_persistentroom", true);
        multiUserChat.sendConfigurationForm(submitForm);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

现在我可以毫无例外地成功提交表单。希望这对你有用。

于 2013-06-07T11:37:14.743 回答
0

您必须具有设置配置的权限。这通常可以在服务器设置中更改。例如,如果您有 Openfire,您应该转到Group Chat> Group chat settings>单击您的群聊服务>Room Creation PermissionsAdministrators

您可能无法更改此客户端,只有当您有权访问您尝试连接的服务器时才有可能。

于 2013-06-04T15:50:15.320 回答