没啥技术含量就不写其他的了 直接上代码
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;
}
}
}