C#实现环信用户和群组操作
来源:互联网 发布:淘宝怎么贷款最高额度 编辑:程序博客网 时间:2024/06/05 22:32
最近项目中使用了环信,根据官方文档,自己封装了一个类,可以实现
用户注册
群组创建
发送文本消息
using System.Collections.Generic;using System.Net.Http;using Newtonsoft.Json;using Newtonsoft.Json.Linq;using System.Net.Http.Headers;using System.Text;namespace WinBLL{ public static class WinHxGroups { private static string HXAppKey = System.Web.Configuration.WebConfigurationManager.AppSettings["HXAppKey"].Split('#')[0]; private static string HXAppKey1 = System.Web.Configuration.WebConfigurationManager.AppSettings["HXAppKey"].Split('#')[1]; private static string HXClientID = System.Web.Configuration.WebConfigurationManager.AppSettings["HXClientID"]; private static string HXClientSecret = System.Web.Configuration.WebConfigurationManager.AppSettings["HXClientSecret"]; private static string HXAdminMobile= System.Web.Configuration.WebConfigurationManager.AppSettings["HXAdminMobile"]; #region 获取环信授权Token /// <summary> /// 获取环信授权Token /// </summary> /// <returns></returns> public static string GetHXToken() { string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/token"; var postData = "{ \"grant_type\": \"client_credentials\", \"client_id\": \"" + HXClientID + "\", \"client_secret\": \"" + HXClientSecret + "\"}"; HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient client = new HttpClient(); HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result; if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { JObject JO = (JObject)JsonConvert.DeserializeObject(hrm.Content.ReadAsStringAsync().Result); return JO["access_token"].ToString(); } hrm.Dispose(); client.Dispose(); // string Token = client.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync().Result; return ""; } #endregion #region 获取环信所有的分组 /// <summary> /// 获取环信所有的分组 /// </summary> /// <returns></returns> public static List<WinModel.HuanXin.HX_Group> ChatGroups() { string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/chatgroups"; var postData = "Bearer " + GetHXToken(); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", postData); HttpResponseMessage hrm = client.GetAsync(url).Result; List<WinModel.HuanXin.HX_Group> LS_Groups = new List<WinModel.HuanXin.HX_Group>(); if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { JObject JO = (JObject)JsonConvert.DeserializeObject(hrm.Content.ReadAsStringAsync().Result); JArray JA = (JArray)JsonConvert.DeserializeObject(JO["data"].ToString()); foreach (JObject j in JA) { //再次请求接口,获取此组的人数和类别 url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/chatgroups/" + j["groupid"].ToString(); hrm = client.GetAsync(url).Result; JObject GroupInfo = (JObject)JsonConvert.DeserializeObject(hrm.Content.ReadAsStringAsync().Result); JArray JA1 = (JArray)JsonConvert.DeserializeObject(GroupInfo["data"].ToString()); WinModel.HuanXin.HX_Group m = new WinModel.HuanXin.HX_Group() { GroupID = j["groupid"].ToString(),//获取组ID GroupUsersCount = int.Parse(JA1[0]["affiliations_count"].ToString()), GroupType = JA1[0]["description"].ToString() }; LS_Groups.Add(m); } } hrm.Dispose(); client.Dispose(); return LS_Groups; } #endregion #region 检测用户是否存在环信 public static bool CheckUser(string ID) { string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/users/" + ID; var postData = "Bearer " + GetHXToken(); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", postData); HttpResponseMessage hrm = client.GetAsync(url).Result; if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { return true; } return false; } #endregion #region 注册环信用户 /// <summary> /// 注册新的环信用户 /// </summary> /// <param name="ID">手机号</param> /// <param name="GroupType">IOS还是安卓 0代表IOS 1代表安卓</param> /// <returns></returns> public static bool RegeditUser(string ID, int GroupType,out string GroupID) { GroupID = string.Empty; string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/users"; string postData = "{ \"username\": \"" + ID + "\", \"password\": \"" + System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(ID, "MD5").ToLower() + "\"}"; string Token = GetHXToken(); HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Token); HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result;//reg if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { //加入分组 HxGroups Model = new HxGroups(); Model = GetModel(GroupType);//从本地数据库获取一个未满员的群组的信息 if (Model.HX_GroupType == null) { //群组已满 创建新群组 Model = CreatGroup("优惠券", 1, GroupType,Token); } url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/chatgroups/" + Model.HX_GroupID + "/users/" + ID; hrm = client.PostAsync(url, null).Result;//拉入群 if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { Model.HX_GroupUsers += 1; Update(Model);//更新本地相关群组信息和环信服务器上的群组信息同步 //用户环信所在组ID GroupID = Model.HX_GroupID; hrm.Dispose(); client.Dispose(); return true; } hrm.Dispose(); client.Dispose(); return false; } hrm.Dispose(); client.Dispose(); // string Token = client.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync().Result; return false; } #endregion #region 创建一个群组 public static HxGroups CreatGroup(string GroupName, int GroupUsers, int GroupType,string Token) { string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/chatgroups"; string postData = " {\"groupname\": \""+ (GroupName+ (GroupType==0?"IOS":"AZ")) + "\",\"desc\": \"" + (GroupType == 0 ? "IOS" : "AZ") + "\",\"public\": false,\"maxusers\": 2000,\"approval\": true,\"owner\": \""+ HXAdminMobile + "\"}"; HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Token); HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result; HxGroups Model = new HxGroups(); if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { JObject JO = (JObject)JsonConvert.DeserializeObject(hrm.Content.ReadAsStringAsync().Result); JO = (JObject)JsonConvert.DeserializeObject(JO["data"].ToString()); string GroupID = JO["groupid"].ToString(); // JArray JA = (JArray)JsonConvert.DeserializeObject(JO["data"].ToString()); Model.HX_GroupID = GroupID; Model.HX_GroupType = GroupType; Model.HX_GroupUsers = 1; if(Insert(Model))//在本地创建一个环信群组信息和环信同步 { hrm.Dispose(); client.Dispose(); return Model; } else { hrm.Dispose(); client.Dispose(); return null; } } else { hrm.Dispose(); client.Dispose(); return null; } } #endregion #region 给群组发信息 /// <summary> /// 给群组中的用户群发信息 /// </summary> /// <param name="Msg">信息</param> /// <param name="GroupType">安卓组还是IOS组,0代表IOS 1代表安卓</param> /// <returns></returns> public static bool SendMsgToGroups(string Msg,int GroupType,out string ReturnCode) { ReturnCode = "200"; string url = "http://a1.easemob.com/" + HXAppKey + "/" + HXAppKey1 + "/messages"; List<HxGroups> LS_HX = new List<HxGroups>(); LS_HX = GetList(GroupType);//从本地数据库中获取现有的环信群组列表 StringBuilder sb = new StringBuilder(); foreach(HxGroups m in LS_HX) { sb.Append("\""+m.HX_GroupID+"\","); } string postData = "{\"target_type\": \"chatgroups\", \"target\": ["+sb.ToString().TrimEnd(',')+"],\"msg\": {\"type\": \"txt\",\"msg\": \""+ Msg + "\"}}"; string Token = GetHXToken(); HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Token); HttpResponseMessage hrm = client.PostAsync(url, httpContent).Result;//reg if (hrm.StatusCode == System.Net.HttpStatusCode.OK) { return true; } ReturnCode = hrm.StatusCode.ToString(); return false; } #endregion }}
0 0
- C#实现环信用户和群组操作
- C# Winform中如何实现获取当前用户的网络名和登录名【数据库操作】
- C# 域用户操作
- C# 操作域用户
- C#操作域用户
- debian 用户和组操作
- debian 用户和组操作
- Linux 用户 和 组操作
- Linux常用命令:文件,用户和群组操作
- C# 域用户操作(转)
- linux 用户和组的管理操作
- linux基础教程---用户和组操作
- Linux之用户和组的操作
- Linux用户和组的操作
- 整理linux用户和组操作
- Linux基础操作-3.用户和组
- C#实现windows用户用户管理(转)
- 集合框架_用户登录注册案例详细分析和分包的实现、用户基本描述类和用户操作接口的实现、用户操作类的具体实现、用户测试类的实现、加入猜数字小游戏
- 【SQL之查询】MySQL查询今天、昨天、上周、近30天、去年等的数据的方法
- 二叉树14:把二叉树打印成多行
- HDU5334(构造,思维)
- spring整合redis(集群、主从)
- Linux下安装MySQLdb模块(Python)
- C#实现环信用户和群组操作
- 二叉树15:对称的二叉树
- 递归和栈求解迷宫的最短路径
- 数据回显
- NS3编译遇到的Python相关的问题解决办法
- 图解Linux命令之--ifconfig命令
- c语言中return
- Thymeleaf教程(三)th标签整理
- Mysql导出sql脚本的正确方式!