XMPP UserSearch 使用最新的 smack 4.1.3 得到远程服务器未发现错误

XMPP UserSearch using latest smack 4.1.3 got remote server no found error

这是我正在使用的: 开火 3.10.2 击掌 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: 未找到远程服务器 - 取消 在线,

    Form searchForm = manager.getSearchForm("search." + connection.getServiceName());

我不知道我是否错过了在 openfire 服务器上配置某些东西,或者我是否需要在开始搜索之前设置一些东西。 我的解决方法是获取注册用户的完整列表,然后从那里进行搜索,但我不确定如何实现。 登录后,花名册中仅包含我的朋友和群组。 有人能给我指出正确的方向吗?

您正在尝试搜索服务器 "search." + connection.getServiceName() 上的用户,但您的服务器告诉您找不到该服务器。您似乎没有在 OpenFire 中设置搜索服务器,或者您使用了错误的地址。