Exemplo n.º 1
0
        public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            var sign      = context.HttpContext.Request.Headers["sign"];
            var appsecret = ConfigurationUtil.GetSection("ZlanApi")["APP_SECRECT"] as string;
            var nonceStr  = context.HttpContext.Request.Headers["noncestr"];
            var timestamp = context.HttpContext.Request.Headers["timestamp"];
            //根据请求类型拼接参数
            var    query  = context.HttpContext.Request.Query;
            string data   = string.Empty;
            string method = context.HttpContext.Request.Method;

            switch (method)
            {
            case "POST":
                System.IO.Stream stream       = context.HttpContext.Request.Body;
                string           responseJson = string.Empty;
                StreamReader     streamReader = new StreamReader(stream);
                data = streamReader.ReadToEnd();
                break;

            case "GET":
                data = query.OrderBy(k => k.Key).ToString();
                break;

            default:
                context.Result = new ObjectResult(ErrorResult <int> .ParameterError);
                return;
            }
            var appid = context.HttpContext.Request.Headers["appid"];

            if (SingUtil.Sign(appid, appsecret, nonceStr, timestamp, data) != sign)
            {
                context.Result = new ObjectResult(ErrorResult <int> .NoAuthorization);
                return;
            }
            await next();
        }
Exemplo n.º 2
0
        public static Newtonsoft.Json.Linq.JObject Execute(string appid, string appsecect, string url, string key, object paramJSON = null)
        {
            string param = "";

            if (paramJSON == null)
            {
                paramJSON = "{}";
            }
            if (paramJSON is string)
            {
                param = paramJSON as string;
            }
            else
            {
                param = JsonConvert.SerializeObject(paramJSON);
            }
            Hashtable paramHash = new Hashtable();

            paramHash["appid"] = appid;
            paramHash["key"]   = key;
            paramHash["param"] = param;
            paramHash["tmp"]   = string.Format("{0}", DateTime.Now.Ticks);

            //获取签名
            string signStr = SingUtil.ZlanSign(paramHash, appsecect);

            paramHash["sign"] = signStr;

            if (url.IndexOf("?") < 0)
            {
                url += "?";
            }
            else
            {
                url += "&";
            }
            var num = 0;

            foreach (var item in paramHash.Keys)
            {
                if (num != 0)
                {
                    url += "&";
                }
                url += item + "=" + HttpUtility.UrlEncode(paramHash[item].ToString());
                num++;
            }

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = "GET";

            //获得响应流
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();


            Stream responseStream = null;

            if (response.ContentEncoding == null)
            {
                responseStream = response.GetResponseStream();     //封装代码处理
            }
            else if (response.ContentEncoding.ToLower() == "gzip") //RFC1952封装
            {
                responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else if (response.ContentEncoding.ToLower() == "deflate")//RFC1951
            {
                responseStream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
            }
            else//RFC1950
            {
                responseStream = response.GetResponseStream();//封装代码处理
            }
            StreamReader sr        = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
            string       strResult = sr.ReadToEnd();//读取流文件

            sr.Close();
            response.Close();// 8/1加入,关闭请求流


            LogUtil.LogText(key, key, string.Format("{0}=>{1}", url, strResult));
            return(JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JObject>(strResult));
        }