目前比较简单的做法就是通过openfire的插件User Service,我们用C#http请求来获取用户列表,返回的是一个xml文件。

插件地址:http://www.igniterealtime.org/projects/openfire/plugins.jsp

安装插件有两种方式:

1.直接到官网下载userservice.jar文件,然后通过管理控制平台上传插件。

2.直接在管理控制平台安装此插件,在插件选项卡里有个“有效的插件”菜单,里边有很多插件。


一:首先需要安装openfire的服务器,包括配置好数据库测试是否可以运行服务器,以win7为例,到开始菜单找到“Openfire Server”点击运行,然后点击“Star”启动服务器,再点击“Laumch Admin”会跳转到管理控制平台,输入管理员密码登录。如下图:

C#获取openfire的用户,包括增、删、改等_User Service

二:在管理控制平台找到选项卡“插件”,里边有我们需要安装的一个User Service插件,如果安装过了会显示已经安装的哪些插件,没有安装,需要点击左侧菜单“有效的插件”,在列表里找到此插件进行安装,可能有点慢,稍等即可。如果在有效的插件列表没有发现很多的插件,那么你需要重新安装openfire服务器或者升级最新版本。

C#获取openfire的用户,包括增、删、改等_管理控制_02

C#获取openfire的用户,包括增、删、改等_User Service_03

三:在选项卡“服务器”找到“服务器设置”下有个菜单“User Service”,说明安装插件成功,但是还是需要进行设置才能通过端口进行访问,不然无法访问或者报错401未授权等。设置:Enabled - User service requests will be processed. 启用、勾选HTTP basic auth - User service REST authentication with Openfire admin account. 如果选择Secret key auth,那C#写着太麻烦,通过访问接口需要传Secret key的值,否则就是报错401。

还可以在系统属性里添加进行设置接口是否启用,需要设置2项值如下图:

C#获取openfire的用户,包括增、删、改等_User Service_04


下面就是开始通过C#代码进行访问:

string url = "http://127.0.0.1:9090/plugins/userService/users";
WebRequest req = WebRequest.Create(url);
string username = "admin";
string password = "admin";
string usernamePassword = username + ":" + password;
CredentialCache mycache = new CredentialCache();
mycache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));
req.Credentials = mycache;
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
WebResponse result = null;

try
{
result = req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();

//read the stream into a string
StreamReader sr = new StreamReader(ReceiveStream);
string resultstring = sr.ReadToEnd();

}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
finally
{
if (result != null)
{
result.Close();
}
}


最后会返回一个xml的文件,里边是所有用户的信息。

至于新增、删除的接口就不做案例里,你可以通过管理控制平台查找demo,里边有介绍如何访问接口,查看地址:http://127.0.0.1:9090/plugin-admin.jsp?plugin=userservice&showReadme=true&decorator=none

如下图点击图标就可以查看此插件的demo:

C#获取openfire的用户,包括增、删、改等_服务器_05