请求头:三个自定义参数和一个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;