[英]Getting all users from Openfire server using smack 4.2.2
好吧,我正在尝试使用 Smack 从 Openfire 服务器获取所有用户,不幸的是我不知道如何 - 我使用的是 Smack 4.2.2。
UserSearchManager usm= new UserSearchManager(connection);
DomainBareJid domainJid =
JidCreate.domainBareFrom(connection.getServiceName());
Form searchForm = usm.getSearchForm(domainJid);
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("Username", true);
answerForm.setAnswer("search", "*");
ReportedData data = usm.getSearchResults(answerForm, domainJid);
if (data.getRows() != null) {
for (ReportedData.Row row: data.getRows()) {
for (String jid:row.getValues("jid")) {
System.out.println(jid);
}
}
}
此代码不起作用,因为:
java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once
您无法通过XEP-0055: Jabber Search
吸引所有用户,只能与过滤器一起使用,以确保用户没有该过滤器(如特殊字符)。 我知道的唯一方法是使用Rest API Plugin
。 您可以从链接中了解有关此插件的更多信息。 祝好运。
错误很明显。 您没有至少连接一次(或者断开连接并且没有重新连接),或者您的用户名错误。
也许您正在尝试在没有本地jid的情况下进行连接。 请检查以下有关XMPP地址格式的说明:
希望你已经解决了这个问题。 我的代码可以处理这个小小的变化
DomainBareJid domainJid = JidCreate.domainBareFrom(“ search。” + connection.getServiceName());
在您的 openfire 中,转到 Plugins 并选择 available-plugins > 然后选择 rest Api > 然后您可以使用以下 url 来获取组中的所有用户:
http://localhost:9090/plugins/restapi/v1/users
注意:您可以在以下链接中找到所有 Rest EndPoint: https : //www.igniterealtime.org/projects/openfire/plugins/1.2.1/restAPI/readme.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.