/// <summary>
        /// 获取服务配置(如未初始化则先初始化)
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IHttpServiceConfiguration ServiceConfigure(this IServiceCollection services)
        {
            var configuration = (IHttpServiceConfiguration)services
                                .FirstOrDefault(x => x.ServiceType == typeof(IHttpServiceConfiguration))?.ImplementationInstance;

            if (configuration == null)
            {
                configuration = new HttpServiceConfiguration();
                services.AddSingleton(configuration);
            }
            return(configuration);
        }
Beispiel #2
0
 private static void ConfigureBaseJsonHttpClient(System.Net.Http.HttpClient client, HttpServiceConfiguration config)
 {
     client.BaseAddress = config.Url;
     client.Timeout     = config.RequestTimeout;
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
     client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
 }
Beispiel #3
0
        /// <summary>
        /// Configure Json HttpClient.
        /// </summary>
        /// <param name="services"></param>
        /// <param name="serviceConfiguration"></param>
        /// <param name="policyConfiguration"></param>
        /// <typeparam name="TClient"></typeparam>
        /// <typeparam name="TImplementation"></typeparam>
        /// <returns>Configured IHttpClientBuilder</returns>
        public static IHttpClientBuilder ConfigureJsonHttpClient <TClient, TImplementation>(this IServiceCollection services, HttpServiceConfiguration serviceConfiguration, PolicyConfiguration policyConfiguration = default)
            where TClient : class
            where TImplementation : class, TClient
        {
            if (serviceConfiguration is null)
            {
                throw new ArgumentNullException(nameof(serviceConfiguration));
            }

            if (policyConfiguration is null)
            {
                throw new ArgumentNullException(nameof(policyConfiguration));
            }

            return(services.AddHttpClient <TClient, TImplementation>(client => ConfigureBaseJsonHttpClient(client, serviceConfiguration))
                   .SetupHandlersAndPolicies(policyConfiguration));
        }