没啥技术含量就不写其他的了 直接上代码
using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace WXL_IM.Util { public class IMUtil { #region 服务器操作URL // 创建【网易云通信ID】的Url // 参数 类型 必须 说明 // accid String 是 网易云通信ID,最大长度32字符,必须保证一个APP内唯一(只允许字母、数字、半角下划线_、@、半角点以及半角-组成,不区分大小写,会统一小写处理,请注意以此接口返回结果中的accid为准)。 // name String 否 网易云通信ID昵称,最大长度64字符,用来PUSH推送时显示的昵称 // props String 否 json属性,第三方可选填,最大长度1024字符 // icon String 否 网易云通信ID头像URL,第三方可选填,最大长度1024 // token String 否 网易云通信ID可以指定登录token值,最大长度128字符,并更新,如果未指定,会自动生成token,并在创建成功后返回 // sign String 否 用户签名,最大长度256字符 // email String 否 用户email,最大长度64字符 // birth String 否 用户生日,最大长度16字符 // mobile String 否 用户mobile,最大长度32字符,只支持国内号码 // gender int 否 用户性别,0表示未知,1表示男,2女表示女,其它会报参数错误 // ex String 否 用户名片扩展字段,最大长度1024字符,用户可自行扩展,建议封装成JSON字符串 static string CRT_USER_URL = "https://api.netease.im/nimserver/user/create.action"; // 更新【网易云通信ID】的Url 非修改用户信息用 // 参数 类型 必须 说明 // accid String 是 网易云通信ID,最大长度32字符,必须保证一个APP内唯一 // props String 否 json属性,第三方可选填,最大长度1024字符 // token String 否 网易云通信ID可以指定登录token值,最大长度128字符 static string UPD_USERID_URL = "https://api.netease.im/nimserver/user/update.action"; // 更新并获取新token // 参数 类型 必须 说明 // accid String 是 网易云通信ID,最大长度32字符,必须保证一个APP内唯一 static string UPDGET_USERTOKEN_URL = "https://api.netease.im/nimserver/user/refreshToken.action"; // 封禁网易云通信ID // 参数 类型 必须 说明 // accid String 是 网易云通信ID,最大长度32字符,必须保证一个APP内唯一 // needkick String 否 是否踢掉被禁用户,true或false,默认false static string BLOCK_USERID_URL = "https://api.netease.im/nimserver/user/block.action"; // 解禁网易云通信ID // 参数 类型 必须 说明 // accid String 是 网易云通信ID,最大长度32字符,必须保证一个APP内唯一 static string UNBLOCK_USERID_URL = "https://api.netease.im/nimserver/user/unblock.action"; #endregion 服务器操作URL //云信AppKey 公匙 static string appKey = ConfigurationManager.AppSettings["IMAppKey"]; //云信AppSecret 私钥 static string appSecret = ConfigurationManager.AppSettings["IMAppSecret"]; /// <summary> /// 执行请求 /// </summary> /// <param name="action">操作码 1创建用户 2更新用户ID 3更新获取用户token 4禁用用户 5解禁用户</param> /// <param name="reqParams">参数 key=value</param> /// <returns></returns> public static string executeRequest(int action,string reqParams) { string url = string.Empty; switch (action) { case 1://创建用户 url = CRT_USER_URL; break; case 2://更新用户ID url = UPD_USERID_URL; break; case 3://更新并获取新的Token url = UPDGET_USERTOKEN_URL; break; case 4://封禁网易云通信ID url = BLOCK_USERID_URL; break; case 5://解禁被封禁的网易云通信ID url = UNBLOCK_USERID_URL; break; default: return "{\"desc\":\"方法选择错误!\",\"code\":-1}"; } WebRequest wReq = WebRequest.Create(url); //------设定云信的相关校验值------ wReq.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; wReq.Method = "POST"; wReq.Headers.Add("AppKey", appKey); //随机数(最大长度128个字符) string nonce = new Random().Next(100000, 999999).ToString(); wReq.Headers.Add("Nonce", nonce); //当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的秒数(String) string curTime = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString(); wReq.Headers.Add("CurTime", curTime); //SHA1(AppSecret + Nonce + CurTime),三个参数拼接的字符串,进行SHA1哈希计算,转化成16进制字符(String,小写) wReq.Headers.Add("CheckSum", SHA1_Hash(appSecret + nonce + curTime)); //------设定云信的相关校验设定------ //-----传递相关操作参数----- byte[] btBodys = Encoding.UTF8.GetBytes(reqParams); wReq.ContentLength = btBodys.Length; using (var wsr = wReq.GetRequestStream()) { wsr.Write(btBodys, 0, btBodys.Length); } //-----传递相关操作参数----- WebResponse wResp = wReq.GetResponse(); Stream respStream = wResp.GetResponseStream(); string resultJson; using (StreamReader reader = new StreamReader(respStream,Encoding.UTF8)) { resultJson = reader.ReadToEnd(); } //Json数据:desc描述,code状态码 return resultJson; } //【工具】计算SHA1值 private static string SHA1_Hash(string str_sha1_in) { SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] bytes_sha1_in = UTF8Encoding.Default.GetBytes(str_sha1_in); byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in); string str_sha1_out = BitConverter.ToString(bytes_sha1_out); str_sha1_out = str_sha1_out.Replace("-", "").ToLower(); return str_sha1_out; } } }
时间: 2024-10-15 06:18:59