/// <summary> /// 获取规范化的头信息 /// </summary> /// <param name="builder">http 请求信息</param> /// <returns>规范化头信息字符串</returns> private string GetCanonicalizedHeaderString(SdkHttpFullRequestBuilder builder) { var headers = builder.GetHeaders(); var keys = headers.Keys; List <string> keysList = keys.ToList().OrderBy(p => p.ToLower(CultureInfo.GetCultureInfo("en-US"))).ToList(); StringBuilder stringBuilder = new StringBuilder(); foreach (var item in keysList) { if (ShouldExcludeHeaderFromSigning(item)) { continue; } string key = item.ToLower(CultureInfo.GetCultureInfo("en-US")); foreach (var headerValue in headers[item]) { string headerCompactedValue = StringUtils.AppendCompactedString(key); stringBuilder.Append(key).Append(":"); if (headerValue != null) { string headerValueCompactedValue = StringUtils.AppendCompactedString(headerValue); stringBuilder.Append(headerValueCompactedValue); } stringBuilder.Append("\n"); } } return(stringBuilder.ToString()); }
/// <summary> /// 获取规范化的头信息 /// </summary> /// <param name="requestModel">签名请求信息</param> /// <returns>规范化头信息字符串</returns> private string GetCanonicalizedHeaderString(RequestModel requestModel) { var headers = requestModel.Header; #if !NET20 && !NET30 var keys = headers.Keys; List <string> keysList = keys.ToList().OrderBy(p => p.ToLower(CultureInfo.GetCultureInfo("en-US"))).ToList(); #else List <string> keysList = new List <string>(); foreach (var item in headers.Keys) { keysList.Add(item); } keysList.Sort(); #endif StringBuilder stringBuilder = new StringBuilder(); foreach (var item in keysList) { if (ShouldExcludeHeaderFromSigning(item)) { continue; } string key = item.ToLower(CultureInfo.GetCultureInfo("en-US")); foreach (var headerValue in headers[item]) { string headerCompactedValue = StringUtils.AppendCompactedString(key); stringBuilder.Append(key).Append(":"); if (headerValue != null) { string headerValueCompactedValue = StringUtils.AppendCompactedString(headerValue); stringBuilder.Append(headerValueCompactedValue); } stringBuilder.Append("\n"); } } return(stringBuilder.ToString()); }