在android中使用xmpp从服务器获取所有注册用户[关闭]

Posted

技术标签:

【中文标题】在android中使用xmpp从服务器获取所有注册用户[关闭]【英文标题】:get all registered user from server using xmpp in android [closed] 【发布时间】:2014-05-28 10:16:59 【问题描述】:

我正在为我的 android 应用程序使用 openfire 服务器。我想将所有注册用户从服务器获取到我的 android 应用程序。我正在使用 xmpp asmack 库。

这是我正在尝试的代码

UserSearchManager 搜索 = new UserSearchManager(connection);

        Form searchForm,answerForm;
        try 
            searchForm = search.getSearchForm("search."+connection.getServiceName());
            answerForm = searchForm.createAnswerForm();  
            answerForm.setAnswer("Username", true);  

            answerForm.setAnswer("search", "abcd");  

            org.jivesoftware.smackx.ReportedData data;

            data = search.getSearchResults(answerForm,"search."+connection.getServiceName());
            if(data.getRows() != null)
            
                Iterator<Row> it = data.getRows();
                while(it.hasNext())
                
                    Row row = it.next();
                    Iterator iterator = row.getValues("jid");
                    if(iterator.hasNext())
                    
                        String value = iterator.next().toString();
                        Log.i("Iteartor values......"," "+value);
                    
                    //Log.i("Iteartor values......"," "+value);
                

            
     catch (XMPPException e2) 
            // TODO Auto-generated catch block
            e2.printStackTrace();
        

请提出任何方法

【问题讨论】:

我想要一百万……你试过什么? 我没有收到任何代码 因为你必须自己写... ***不是“为我写代码”服务 我已添加代码 This question 提供了如何在 Objective C 中执行此操作的示例。将它们转换为 Java 和 aSmack 应该相当容易。 【参考方案1】:

不知怎的,我想出了答案

public List getAllUser()

List<String> l = new ArrayList<String>();

UserSearchManager search = new UserSearchManager(connection);
try 
    Form searchForm = search.getSearchForm("search." + connection.getServiceName());
    Form answerForm = searchForm.createAnswerForm();

    answerForm.setAnswer("Username", true);
    answerForm.setAnswer("search", "*");

    System.out.println("search form");
    ReportedData data = search.getSearchResults(answerForm, "search."+connection.getHost());



    if(data.getRows() != null)
        
        System.out.println("not null");
            Iterator<Row> it = data.getRows();
            while(it.hasNext())
            
                //System.out.println("row");
                Row row = it.next();
                Iterator iterator = row.getValues("jid");
                if(iterator.hasNext())
                
                String value = iterator.next().toString();
                l.add(value);
               // Log.i("Iteartor values......"," "+value);
                
                //Log.i("Iteartor values......"," "+value);
            

        else
            System.out.println("its null");
        
 catch (XMPPException e1) 
    // TODO Auto-generated catch block
    e1.printStackTrace();
    System.out.println("not search form");

return l;


列表 l = new ArrayList();

    l = con.getAllUser();


    for(int i=0;i<l.size();i++)
        System.out.println(l.get(i));

【讨论】:

@RishabhSrivastava 检查是否已与 xmpp 服务器建立连接........ 你能发布错误@RishabhSrivastava 您需要提供provider manager代码。工作解决方案在这里:***.com/questions/8213812/…

以上是关于在android中使用xmpp从服务器获取所有注册用户[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在openfire中获取xmpp ios中的所有注册用户

xmpp ios:如何从 openfire 服务器检索所有注册用户

如何在ios中使用xmpp获取在线好友?

使用 Android 应用程序在 XMPP Openfire 服务器中的聊天过程

线程安全地将数据从服务传递到活动 - Android

无法使用 asmack 版本 asmack-android-8-4.0.6.jar 在 xmpp 中返回组列表