/// <summary> /// 推送消息,注意如果初始化本类已经填写了appkey, /// <paramref name="paramsJsonObj"/> 里面的appkey会自动赋值 /// 反之如果您填写了<paramref name="paramsJsonObj"/> 里面的appkey,将采用参数里面的值,忽略本类初始化值。 /// </summary> /// <param name="paramsJsonObj"></param> /// <returns></returns> public ReturnJsonClass SendMessage(PostUMengJsonBase paramsJsonObj) { var request = CreateHttpRequest(paramsJsonObj); var resultResponse = requestClient.Execute(request); ReturnJsonClass rjs = SimpleJson.DeserializeObject <ReturnJsonClass>(resultResponse.Content); return(rjs); }
/// <summary> /// 异步推送消息,注意如果初始化本类已经填写了appkey, /// <paramref name="paramsJsonObj"/> 里面的appkey会自动赋值 /// 反之如果您填写了<paramref name="paramsJsonObj"/> 里面的appkey,将采用参数里面的值,忽略本类初始化值。 /// </summary> /// <param name="paramsJsonObj"></param> /// <param name="callback"></param> public void AsynSendMessage(PostUMengJsonBase paramsJsonObj, Action <ReturnJsonClass> callback) { var request = CreateHttpRequest(paramsJsonObj); requestClient.ExecuteAsync(request, resultResponse => { if (callback != null) { callback(SimpleJson.DeserializeObject <ReturnJsonClass>(resultResponse.Content)); } }); }
private string InitParamsAndUrl(PostUMengJsonBase paramsJsonObj) { if (string.IsNullOrEmpty(paramsJsonObj.appkey)) { paramsJsonObj.appkey = this.appkey; } //重置url this.apiFullUrl = string.Concat(requestProtocol, "://", hostUrl, "/", postPath, "/"); paramsJsonObj.timestamp = GetTimeStamp().ToString(); //string json = RestSharp.SimpleJson.SerializeObject(paramsJsonObj); Newtonsoft.Json.JsonSerializerSettings jssetting = new Newtonsoft.Json.JsonSerializerSettings(); jssetting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; string json = Newtonsoft.Json.JsonConvert.SerializeObject(paramsJsonObj, jssetting); json = json.Replace("content_available", "content-available"); string calcSign = md5.GenerateMD5(requestMethod + apiFullUrl + json + appMasterSecret).ToLower(); this.CalcSign = calcSign; return(json); }
private RestRequest CreateHttpRequest(PostUMengJsonBase paramsJsonObj) { string bodyJson = InitParamsAndUrl(paramsJsonObj); if (requestClient == null) { var FullUrl = string.Format("{0}?sign={1}", this.apiFullUrl, this.CalcSign); requestClient = new RestClient(FullUrl); requestClient.Encoding = Encoding.UTF8; requestClient.UserAgent = USER_AGENT; } else { var FullUrl = string.Format("{0}?sign={1}", this.apiFullUrl, this.CalcSign); requestClient.BaseUrl = new Uri(FullUrl); } var request = new RestRequest(Method.POST); request.RequestFormat = DataFormat.Json; request.AddParameter("application/json", bodyJson, ParameterType.RequestBody); //request.AddJsonBody(paramsJsonObj); return(request); }