这是我正在使用的: Openfire 3.10.2 Smack 4.1.3 环境:Android
我正在尝试搜索注册用户,但我一直未能这样做。我尝试了很多不同的组合。我也试过了旧版本的smack。 这是我最新修改过的代码:
UserSearchManager userSearchManager = new UserSearchManager(connection);
Form searchForm = null;
List<ReportedData.Row> list = null;
try {
userSearchManager.getSearchForm("search." + connection.getServiceName());
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("Username", true);
answerForm.setAnswer("search", userName);
answerForm.setAnswer("Name", true);
answerForm.setAnswer("search", userName);
ReportedData data = userSearchManager.getSearchResults(answerForm, "search." + connection.getServiceName());
list = data.getRows();
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
Log.e(LOG_TAG, e.getMessage());
} catch (SmackException.NotConnectedException e) {
Log.e(LOG_TAG, e.getMessage());
}
我会收到此错误 org.jivesoftware.smack.XMPPException $ XMPPErrorException:XMPPError:remote-server-not-found - 取消 在线,
Form searchForm = manager.getSearchForm("search." + connection.getServiceName());
我不知道我是否错过了在openfire服务器上配置的东西,或者在开始搜索之前是否需要设置一些内容。 我的解决方法的想法是获取注册用户的完整列表,然后从那里搜索,但我不知道如何实现这一点。 登录后,名单只包括我的朋友和小组。 有人能指出我正确的方向吗?
答案 0 :(得分:1)
您正在尝试搜索服务器"search." + connection.getServiceName()
上的用户,但您的服务器告诉您它无法找到该服务器。看起来您没有在OpenFire中设置搜索服务器,或者您使用了错误的地址。