openfire - 使用 smack#UserSearchManager 无法搜索用户
问题描述
我尝试使用 Smack#UserSearchManager 搜索用户。但它总是返回空的 ReportedData。我确定我搜索的用户是存在的。所以我使用 spark 搜索同一个用户。它是真实存在的。那是我的搜索代码。它在 smack 4.2.4 中使用。
DomainBareJid searchJID = JidCreate.domainBareFrom(Domainpart.from("search."+IMLib.getConn().getServiceName().asUnescapedString()));
UserSearchManager manager = new UserSearchManager(IMLib.getConn());
Form searchForm = manager.getSearchForm(searchJID);
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("Name", true);
answerForm.setAnswer("Username", true);
answerForm.setAnswer("Email", true);
answerForm.setAnswer("search", account);
ReportedData reportedData = manager.getSearchResults(answerForm, searchJID);
List<ReportedData.Row> rows = reportedData.getRows();
解决方案
考虑代码中的“帐户”必须是本地部分,例如 user1@domain/resource 中的“user1”。我的代码正在运行:
UserSearchManager sm = new UserSearchManager(connection);
DomainBareJid sDomain = JidCreate.domainBareFrom("search." + connection.getServiceName());
Form form = sm.getSearchForm(sDomain).createAnswerForm();
form.setAnswer("Username", true);
form.setAnswer("search", _user_name); // _user_name is "user1"
ReportedData reportedData = sm.getSearchResults(form, sDomain);
推荐阅读
- prestashop - Prestashop 管理面板访问问题
- jquery - 使用引导程序自定义上下文菜单位置
- mysql - Siteground 托管到 AWS RDS 连接花费了太多时间
- typescript - Typescript:可以使用枚举作为函数参数类型吗?
- java - 无法使用 selenium 在离子输入中找到 textarea 元素
- extjs - 带有可点击按钮的组合框列表
- javascript - axios.all 将函数显示为未定义
- apache-spark - 火花错误读取镶木地板
- abap - ABAP中的复合子程序调用?
- vba - 尝试遍历子文件夹和子文件夹中的文件