C#关于HttpClient的应用(二):融云IM集成

时间:2022-08-03 14:45:39
    public class RcHttpClient:BaseHttpClient
{
private String appKey;
private String appSecret; public RcHttpClient()
{
this.appKey = BaseHelper.GetValue("RongCloudAppKey");
this.appSecret = BaseHelper.GetValue("RongCloudSecret");
this.contentType = "application/x-www-form-urlencoded";
} public RcHttpClient(String appKey, String masterSecret)
{
this.appKey = appKey;
this.appSecret = masterSecret;
this.contentType = "application/x-www-form-urlencoded";
} /// <summary>
/// HTTP 验证
/// </summary>
/// <returns></returns>
public override Dictionary<string,string> Authorization()
{
Random rd = new Random();
String nonce = Convert.ToString(rd.Next());
string timestamp = Convert.ToString(BaseHelper.ConvertDateTimeInt(DateTime.Now));
string signature = Sha1.GetHash(this.appSecret + nonce + timestamp); return new Dictionary<string, string>
{
{"App-Key", this.appKey},
{"Nonce", nonce},
{"Timestamp", timestamp},
{"Signature", signature}
};
}

Server层:

    public class RcClientServer
{
#region 请求地址
private const String HOST_PATH = "http://api.cn.ronghub.com";
private const String GET_TOKEN_PATH = HOST_PATH + "/user/getToken.json";
private const String CREATE_GROUP_PATH = HOST_PATH + "/group/create.json";
private const String JOIN_GROUP_PATH = HOST_PATH + "/group/join.json";
private const String QUIT_GROUP_PATH = HOST_PATH + "/group/quit.json";
private const String DISMISS_PATH = HOST_PATH + "/group/dismiss.json";
private const String SYNC_GROUP_PATH = HOST_PATH + "/group/sync.json";
private const String SEND_MSG_PATH = HOST_PATH + "/message/publish.json";
private const String BROADCAST_PATH = HOST_PATH + "/message/broadcast.json";
private const String CREATE_CHATROOM_PATH = HOST_PATH + "/chatroom/create.json";
private const String DESTORY_CHATROOM_PATH = HOST_PATH + "/chatroom/destroy.json";
private const String QUERY_CHATROOM_PATH = HOST_PATH + "/chatroom/query.json";
#endregion /// <summary>
/// 获取Token
/// </summary>
/// <param name="userId"></param>
/// <param name="name"></param>
/// <param name="portraitUri"></param>
/// <returns></returns>
public static ResultDTO GetToken(String userId, String name, String portraitUri)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"name", name},
{"portraitUri", portraitUri}
};
RcHttpClient client=new RcHttpClient();
var result = client.SendRequest(Method.Post, GET_TOKEN_PATH, client.BuildQueryStr(reqParams));
if (result.status)
{
return WebApi.Success(JsonHelper.ToObject(result.info.ToString())["token"].ToString());
}
return WebApi.Error(result.info);
} /// <summary>
/// 创建群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <remarks>同一用户最多可加入 3000 个群,每个群最大至 3000 人</remarks>
/// <returns></returns>
public static bool CreateGroup(String userId, String groupId, String groupName)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId},
{"groupName", groupName}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, CREATE_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 加入群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <remarks>同一用户最多可加入 3000 个群,每个群最大至 3000 人</remarks>
/// <returns></returns>
public static bool JoinGroup(String userId, String groupId, String groupName)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId},
{"groupName", groupName}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, JOIN_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 退出群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public static bool QuitGroup(String userId, String groupId)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId}
}; RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, QUIT_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 解散群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public static bool DismissGroup(String userId, String groupId)
{
var reqParams = new Dictionary<String, String>
{
{"userId", userId},
{"groupId", groupId}
}; RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, DISMISS_PATH, client.BuildQueryStr(reqParams));
return result.status;
} /// <summary>
/// 同步群组
/// </summary>
/// <param name="userId"></param>
/// <param name="groupId"></param>
/// <param name="groupName"></param>
/// <returns></returns>
public static bool SyncGroup(String userId, String[] groupId, String[] groupName)
{
String postStr = "userId=" + userId + "&";
for (int i = ; i < groupId.Length; i++)
{
var id=HttpUtility.UrlEncode(groupId[i], Encoding.UTF8);
var name = HttpUtility.UrlEncode(groupName[i], Encoding.UTF8);
postStr += "group[" + id + "]=" + name + "&";
}
postStr = postStr.Substring(, postStr.LastIndexOf('&')); RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, SYNC_GROUP_PATH, postStr);
return result.status;
} /// <summary>
/// 发送文本消息
/// </summary>
/// <param name="fromUserId"></param>
/// <param name="toUserId"></param>
/// <param name="content"></param>
/// <returns></returns>
public static bool SendTextMessage(string fromUserId,string toUserId,string content)
{
var reqParams = new Dictionary<String, String>
{
{"fromUserId", fromUserId},
{"toUserId", toUserId},
{"objectName", "RC:TxtMsg"},
{"content", content}
};
RcHttpClient client = new RcHttpClient();
var result = client.SendRequest(Method.Post, SYNC_GROUP_PATH, client.BuildQueryStr(reqParams));
return result.status;
}
}