private void RequestAsync(string serviceName, string actionName, QCloudIMRequest request) { RestRequest restrequest; var client = GetRestSharpClient(serviceName, actionName, request, out restrequest); var result = client.ExecuteTaskAsync <QCloudIMResult>(restrequest).Result; }
private static T Request <T>(string serviceName, string actionName, QCloudIMRequest request) where T : QCloudIMResult, new() { RestRequest restrequest; var client = GetRestSharpClient(serviceName, actionName, request, out restrequest); var response = client.Execute <T>(restrequest); //if (response.StatusCode != "OK") //{ // throw new YCException("Failed to request QCloud IM API " + actionName + ": " + response.ErrorInfo); //} return(JsonConvert.DeserializeObject <T>(response.Content)); }
private static RestClient GetRestSharpClient(string serviceName, string actionName, QCloudIMRequest request, out RestRequest restrequest) { request.AppId = AppId; request.Random = Math.Abs(new Random().Next()).ToString(); if (string.IsNullOrWhiteSpace(request.ReqIdentifier)) { request.ReqIdentifier = GlobalRequestIdentifier; } try { string userSig = MakeUserSig(request.ReqIdentifier); request.UserSig = userSig; } catch (Exception ex) { throw new Exception("Failed to generate signature for " + serviceName + " " + actionName + " " + request.ReqIdentifier, ex); } string url = MakeApiUrl(serviceName, actionName, request); RestClient client = new RestClient(baseUrl: ApiUrl); restrequest = new RestRequest(url, Method.POST); restrequest.AddHeader("Content-Type", "application/json"); //设置HTTP头 var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; string jsonToSend = JsonConvert.SerializeObject(request, Formatting.Indented, jSetting); restrequest.AddParameter("application/json; charset=utf-8", jsonToSend, "application/json;charset=UTF-8", ParameterType.RequestBody); restrequest.RequestFormat = DataFormat.Json; return(client); }
/// <summary> /// 拼接restful的url参数 /// </summary> /// <param name="serviceName"></param> /// <param name="actionName"></param> /// <param name="request"></param> /// <returns></returns> private static string MakeApiUrl(string serviceName, string actionName, QCloudIMRequest request) { return(serviceName + "/" + actionName + "?usersig=" + request.UserSig + "&identifier=" + request.ReqIdentifier + "&sdkappid=" + request.AppId + "&random=" + request.Random + "&contenttype=json"); }