Пример #1
0
        /// <summary>
        /// 获取认证方式
        /// </summary>
        /// <param name="apiAuthentication">认证方式</param>
        /// <returns></returns>
        private static AuthenticationHeaderValue GetAuthenticationHeaderValue(ApiAuthenticationEnum apiAuthentication)
        {
            AuthenticationHeaderValue authentication;

            switch (apiAuthentication)
            {
            default:
                authentication = null;
                break;

            case ApiAuthenticationEnum.User:
                //此身份验证方式安全性较低
                authentication = new AuthenticationHeaderValue("Basic",
                                                               Convert.ToBase64String(Encoding.UTF8.GetBytes("MyFrameCore:U2FsdGVkX1+EMHCSK8N6i8IOZOCj3hfGEb2DcesfWk4=")));
                break;
            }
            return(authentication);
        }
Пример #2
0
        /// <summary>
        /// 创建HttpClient
        /// </summary>
        /// <param name="apiAuthentication"></param>
        /// <returns>HttpClient</returns>
        private static HttpClient PrepareHttpClient(ApiAuthenticationEnum apiAuthentication, string data = "")
        {
            var handler = new HttpClientHandler
            {
                AllowAutoRedirect      = false,
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };
            // ssl请求
            //handler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;正式环境报错:他处理程序不支持自定义与此结合证书处理
            var httpClient     = new HttpClient(handler);
            var authentication = GetAuthenticationHeaderValue(apiAuthentication);

            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            string salt = getsalt(), passid = getpassid(salt, data), timestamp = gettime(), signature = getsign(timestamp, salt, passid, data);

            httpClient.DefaultRequestHeaders.Add("passid", passid);
            httpClient.DefaultRequestHeaders.Add("timestamp", timestamp);
            httpClient.DefaultRequestHeaders.Add("salt", salt);
            httpClient.DefaultRequestHeaders.Add("signature", signature);
            httpClient.DefaultRequestHeaders.AcceptEncoding.Add(StringWithQualityHeaderValue.Parse("gzip"));
            httpClient.DefaultRequestHeaders.Authorization = authentication;

            return(httpClient);
        }