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(); }
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)); }