Beispiel #1
0
 /// <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
         });
     }
 }
Beispiel #2
0
        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");
        }
Beispiel #3
0
        /// <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
                });
            }
        }