[英]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.