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

时间:2015-08-25 19:37:14

标签: android xmpp openfire smack asmack

这是我正在使用的: 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服务器上配置的东西,或者在开始搜索之前是否需要设置一些内容。 我的解决方法的想法是获取注册用户的完整列表,然后从那里搜索,但我不知道如何实现这一点。 登录后,名单只包括我的朋友和小组。 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

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