如何检查用户是否使用asmack在ejabberd服务器中注册

时间:2016-01-18 14:19:37

标签: xmpp ejabberd

以下是我用于搜索在xmpp服务器中注册或不使用asmack的给定用户的代码。

        UserSearchManager userSearchManager = new UserSearchManager(
                connection);
        Form searchForm;
        try {
            searchForm = userSearchManager.getSearchForm("vjud."
                    + connection.getServiceName());

        Form answerForm = searchForm.createAnswerForm();
        answerForm.setAnswer("user", true);
        answerForm.setAnswer("search", "test"); // here i'm passsing the
                                                // Text value to search

        ReportedData resultData;
        resultData = userSearchManager.getSearchResults(answerForm,
                "vjud." + connection.getServiceName());

        Iterator<Row> it = resultData.getRows();
        Row row = null;
        while (it.hasNext()) {
            String value = it.next().toString();
            Log.i("Iteartor values......", " " + value);
            System.out.println("Jabber_id :"
                    + row.getValues("jid").next().toString());
            System.out.println("Name :"
                    + row.getValues("Name").next().toString());
            row = it.next();
        }

        } catch (XMPPException e) {

            e.printStackTrace();
        }

表单answerForm = searchForm.createAnswerForm();得到NullPointerException.Anyone请提前帮助谢谢。

1 个答案:

答案 0 :(得分:1)

您不能使用Jabber用户目录来了解用户是否已注册。 Jabber用户目录(vjud)基于用户在其Vcard中发布的信息。搜索不会匹配没有Vcard的注册用户。