好吧,我正在尝试使用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
吸引所有用户,只能与确保用户没有的过滤器一起使用(如特殊字符)。我知道的唯一方法是使用openfire的Rest API Plugin
。您可以从链接中了解有关此插件的更多信息。祝好运。