bti*_*sae 3 java xmpp openfire smack
我一直在使用 smack 客户端库 4.1.8 和 xmpp 服务器(openfire 服务器)开发聊天应用程序,但是在尝试使用 Accountmanger 类创建新用户时,它引发了异常“XMPPError: bad-request - modify”
XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setHost("127.0.0.1")
.setDebuggerEnabled(true)
.setPort(5222)
.setSendPresence(true)
.setServiceName("127.0.0.1")
.build();
AbstractXMPPConnection conn2 = new XMPPTCPConnection(conf);
//conn2.login();
conn2.connect();
AccountManager accountManager = AccountManager.getInstance(conn2);
if (accountManager.supportsAccountCreation()) {
accountManager.sensitiveOperationOverInsecureConnection(true);
accountManager.createAccount("qidus", "123456");
conn2.login("qidus", "123456");
}
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
例外是这个
04:01:41 AM SENT (0): <iq to='127.0.0.1' id='aYej1-3' type='get'><query xmlns='jabber:iq:register'></query></iq>
Run Code Online (Sandbox Code Playgroud)
04:01:41 AM RECV (0):
org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: bad-request - modify
at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:135)
at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:213)
at org.jivesoftware.smackx.iqregister.AccountManager.getRegistrationInfo(AccountManager.java:332)
at org.jivesoftware.smackx.iqregister.AccountManager.supportsAccountCreation(AccountManager.java:144)
at chat.Chat$1.run(Chat.java:46)
Run Code Online (Sandbox Code Playgroud)
您需要正确设置服务名称。您可以通过管理面板 (127.0.0.1:9090) 在 Openfire 中检查您的 serviceName,它位于页面中间的第一页,登录后查找“服务器名称”。
默认情况下,它是您的机器名称。
但是,您的代码将只运行一次:由于已经注册的用户,第二次 AccountManger 将抛出异常。
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |