Exemplo n.º 1
0
        /// <summary>
        /// 生成预签名头信息
        /// </summary>
        /// <param name="builder">http 请求信息</param>
        /// <param name="contentSha256">http  content  计算过 hmac sha256 的内容信息</param>
        /// <returns>预签名头信息字符串</returns>
        private string CreateCanonicalRequest(SdkHttpFullRequestBuilder builder, string contentSha256)
        {
            string parameters = builder.GetParameters();

#if NET35
            if (!string.IsNullOrEmpty(parameters) && !string.IsNullOrEmpty(parameters.Trim()))
#else
            if (!string.IsNullOrWhiteSpace(parameters))
#endif
            {
                if (parameters.StartsWith("?"))
                {
                    parameters = parameters.Substring(1);
                }
            }
            string path             = SdkHttpUtils.AppendUri(builder.GetEndpoint().AbsolutePath, builder.GetResourcePath());
            string canonicalRequest = new StringBuilder(builder.GetHttpMethod().ToString().ToUpper())
                                      .Append(ParameterConstant.LINE_SEPARATOR)
                                      .Append(GetCanonicalizedResourcePath(path, _doubleUrlEncode))
                                      .Append(ParameterConstant.LINE_SEPARATOR)
                                      .Append(parameters)
                                      .Append(ParameterConstant.LINE_SEPARATOR)
                                      .Append(GetCanonicalizedHeaderString(builder))
                                      .Append(ParameterConstant.LINE_SEPARATOR)
                                      .Append(GetSignedHeadersString(builder))
                                      .Append(ParameterConstant.LINE_SEPARATOR)
                                      .Append(contentSha256)
                                      .ToString();

            return(canonicalRequest);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加头信息
        /// </summary>
        /// <param name="builder">http请求信息</param>
        private void AddHostHeader(ref SdkHttpFullRequestBuilder builder)
        {
            var endPoint = builder.GetEndpoint();

            if (endPoint == null)
            {
                throw new ArgumentNullException(" can not get the uri from de SdkHttpFullRequestBuilder , please check the param set ");
            }
            StringBuilder hostHeaderBuilder = new StringBuilder(endPoint.Host);

            if (SdkHttpUtils.IsUsingNonDefaultPort(endPoint))
            {
                hostHeaderBuilder.Append(":").Append(endPoint.Port);
            }

            builder.Header(ParameterConstant.HOST, hostHeaderBuilder.ToString());
            string contentSha256 = CalculateContentHash(builder);
        }