无法使用 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(java) 创建、发送和接收 iq 数据包
无法在 JAVA 中使用 SMACK api 显示收到的消息