netcore调用契约锁验签接口

请求头:三个自定义参数和一个Content-Type:

​ 1、自定义参数 x-qys-accesstoken :“创建应用”时生成的AppToken;

​ 2、自定义参数 x-qys-timestamp :发起请求的当前时间,可以取自机器的本地时间,误差不能超过15分钟;

​ 3、自定义参数 x-qys-nonce :本地生成的随机数,一般用UUID标识,15分钟内不能重复。与时间参数结合防止重放攻击;

​ 4、自定义参数 x-qys-signature :即签名信息,生成算法为:Md5(AppToken + AppSecret + timestamp+nonce),即AppToken 和 AppSecret 和 timestamp和nonce拼接的字符串的MD5值,注:MD5值为32位小写

 

         var formData = new MultipartFormDataContent();

                var seed = Guid.NewGuid().GetHashCode();
                Random rd = new Random(seed);
                int i = rd.Next(0,100000);
                double j = (double)i / 100000;

                string uuid = j.ToString();
                string AppToken = "wWqwt5Aa8A";
                string AppSecre = "TYkdqgZFZOOTfw6VspVK4znw5MzoP4";
                TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                string time =  Convert.ToInt64(ts.TotalMilliseconds).ToString();
                string signature = MD5Hepler.MD5Encrypt32(AppToken + AppSecre + time + uuid);
                formData.Headers.Add("x-qys-accesstoken", AppToken);
                formData.Headers.Add("x-qys-timestamp", time);
                formData.Headers.Add("x-qys-nonce", uuid);
                formData.Headers.Add("x-qys-signature", signature);
                formData.Add(new StreamContent(memoryStream, (int)memoryStream.Length), "file", fileName);

                var _httpclient = new HttpClient();
                var response = _httpclient.PostAsync(uri, formData).Result;

  

posted @ 2022-03-18 18:07  zwbsoft  阅读(260)  评论(0编辑  收藏  举报