使用smack在Ejabberd2上搜索用户失败 [英] Search for users on Ejabberd2 using smack, fails

查看:104
本文介绍了使用smack在Ejabberd2上搜索用户失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

服务器:ejabberd2
XMPP:smack 3.3.1



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



可以在此处找到Smack Javadocs




  • 我正在使用在Smack库中找到的UserSearch类。

  • 我可以连接到服务器。

  • 我可以使用用户名和密码登录。

  • 我可以在服务器中添加/注册新用户。



我想查找服务器上是否已经存在用户名。

  UserSearchManager search = new UserSearchManager(connection);  

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

ReportedData数据= search.getSearchResults(answerForm, search。 + connection.getServiceName());

上面的代码输出以下错误:

 服务不可用(503)
在org.jivesoftware.smackx.search.UserSearch.getSearchForm(UserSearch.java:84)
在org.jivesoftware.smackx .search.UserSearchManager.getSearchForm(UserSearchManager.java:73)
在com.phanism.www.XmppConnect.searchUser(XmppConnect.java:74)
在com.phanism.www.XmppConnect.main(XmppConnect .java:97)


解决方案

您尚未设置用户名

  erSearchManager search = new UserSearchManager(连接); 
表单searchForm = search.getSearchForm( search。 + connection.getServiceName());
表单answerForm = searchForm.createAnswerForm();
answerForm.setAnswer( Username,true);
answerForm.setAnswer( search,name); //这里必须添加用户名,用 amith代替

然后它将起作用..:)


Server: ejabberd2 XMPP: smack 3.3.1

The goal is to design a chat engine. The user, by entering a username should be able to find out if the entered username is registered on the server.

The Smack Javadocs can be found here

  • I am using UserSearch classes found in the Smack library.
  • I can connect to the server.
  • I can login using a username and password.
  • I can add/sign up new users into the server.

I want to find if a username already exists on the server. The code that I have used and its respective error that I got are given below.

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());

The above code outputs the following error:

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)

解决方案

You have not set the username you want to search.

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"

Then it will work.. :)

这篇关于使用smack在Ejabberd2上搜索用户失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆