/// <summary> /// 发起推送请求到信鸽并获得相应 /// </summary> /// <param name="url">url</param> /// <param name="parameters">字段</param> /// <returns>返回值json反序列化后的类</returns> private Ret CallRestful(String url, IDictionary <string, string> parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } try { parameters.Add("access_id", accessId); parameters.Add("timestamp", ((int)(DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime( new System.DateTime(1970, 1, 1))).TotalSeconds).ToString()); parameters.Add("valid_time", valid_time.ToString()); string md5sing = SignUtility.GetSignature(parameters, this.secretKey, url); parameters.Add("sign", md5sing); var res = HttpWebResponseUtility.CreatePostHttpResponse(url, parameters, null, null, Encoding.UTF8, null); var resstr = res.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(resstr); var resstring = sr.ReadToEnd(); return(JsonConvert.DeserializeObject <Ret>(resstring)); } catch (Exception e) { return(new Ret { ret_code = -1, err_msg = e.Message }); } }
public void GetSignatureTest() { IDictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("access_id", "123"); parameters.Add("timestamp", "1386691200"); parameters.Add("Param1", "Value1"); parameters.Add("Param2", "Value2"); Assert.AreEqual(SignUtility.GetSignature(parameters, "abcde", "openapi.xg.qq.com/v2/push/single_device"), "6b90c7f4a137c7d0b756d48f748c93b2"); }
/// <summary> /// 发起推送请求到信鸽并获得相应 /// </summary> /// <param name="url">url</param> /// <param name="parameters">字段</param> /// <returns>返回值json反序列化后的类</returns> private Ret CallRestful(String url, IDictionary <string, object> parameters) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } if (parameters == null) { throw new ArgumentNullException("parameters"); } try { bool isAndroid = true; if (parameters.ContainsKey("environment")) { object environment = null; if (parameters.TryGetValue("environment", out environment)) { if (environment is int) { int env = Convert.ToInt32(environment); if (env == 1 || env == 2) { isAndroid = false; } } if (environment is string) { int env = 0; if (int.TryParse(environment.ToString(), out env)) { if (env == 1 || env == 2) { isAndroid = false; } } } } } parameters.Add("access_id", (isAndroid ? accessId : accessId_IOS)); parameters.Add("timestamp", ((int)(DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))).TotalSeconds).ToString()); parameters.Add("valid_time", valid_time.ToString()); string md5sing = SignUtility.GetSignature(parameters, (isAndroid ? this.secretKey : this.secretKey_IOS), url); parameters.Add("sign", md5sing); var res = HttpWebResponseUtility.CreatePostHttpResponse(url, parameters, null, null, Encoding.UTF8, null); //var resstr = res.GetResponseStream(); //StreamReader sr = new StreamReader(resstr); //var resstring = sr.ReadToEnd(); Ret ret = new Ret { ret_code = -1, err_msg = "未知错误" }; using (StreamReader streamReader = new StreamReader(res.GetResponseStream(), Encoding.UTF8)) { string resString = streamReader.ReadToEnd(); ret = JsonConvert.DeserializeObject <Ret>(resString); } return(ret); } catch (Exception e) { return(new Ret { ret_code = -1, err_msg = e.Message }); } }