【问题标题】:Search for users on Ejabberd2 using smack, fails使用 smack 在 Ejabberd2 上搜索用户,失败
【发布时间】:2013-11-17 11:43:09
【问题描述】:

服务器:ejabberd2 XMPP:smack 3.3.1

目标是设计一个聊天引擎。用户通过输入用户名应该能够查明输入的用户名是否已在服务器上注册。

The Smack Javadocs can be found here

  • 我正在使用 Smack 库中的 UserSearch 类。
  • 我可以连接到服务器。
  • 我可以使用用户名和密码登录。
  • 我可以在服务器中添加/注册新用户。

我想查找服务器上是否已经存在用户名。下面给出了我使用的代码及其各自的错误。

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

ReportedData data = search.getSearchResults(answerForm,"search."+connection.getServiceName());

以上代码输出如下错误:

service-unavailable(503)
at org.jivesoftware.smackx.search.UserSearch.getSearchForm(UserSearch.java:84)
at org.jivesoftware.smackx.search.UserSearchManager.getSearchForm(UserSearchManager.java:73)
at com.phanism.www.XmppConnect.searchUser(XmppConnect.java:74)
at com.phanism.www.XmppConnect.main(XmppConnect.java:97)

【问题讨论】:

    标签: java xmpp smack ejabberd


    【解决方案1】:

    您尚未设置要搜索的用户名。

    erSearchManager search = new UserSearchManager(connection);
    Form searchForm = search.getSearchForm("search."+connection.getServiceName());
    Form answerForm = searchForm.createAnswerForm(); 
    answerForm.setAnswer("Username", true);  
    answerForm.setAnswer("search", name);//Here username must be added name replace by "amith"
    

    然后它会工作.. :)

    【讨论】:

    • 在 jabbered 中失败了。这个解决方案只适用于 Openfire
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2018-12-30
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多