目前比较简单的做法就是通过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”会跳转到管理控制平台,输入管理员密码登录。如下图:
二:在管理控制平台找到选项卡“插件”,里边有我们需要安装的一个User Service插件,如果安装过了会显示已经安装的哪些插件,没有安装,需要点击左侧菜单“有效的插件”,在列表里找到此插件进行安装,可能有点慢,稍等即可。如果在有效的插件列表没有发现很多的插件,那么你需要重新安装openfire服务器或者升级最新版本。
三:在选项卡“服务器”找到“服务器设置”下有个菜单“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#代码进行访问:
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: