HttpClientFactory
创建的HttpClient
,也即是HttpClientHandler
,只是这些个HttpClient
被放到了“池子”中,工厂每次在create
的时候会自动判断是新建还是复用。(默认生命周期为2min,默认的生命周期可以修改)
第一种使用方式
- 在
Startup.cs
中进行注册
//注册http请求服务 services.AddHttpClient();
Httphelper
请求辅助类中使用
/// <summary> /// 注入http请求 /// </summary> private readonly IHttpClientFactory httpClientFactory; public HttpHelp(IHttpClientFactory _httpClientFactory) { httpClientFactory = _httpClientFactory; } // <summary> // Get请求数据 // <para>最终以url参数的方式提交</para> // </summary> // <param name="parameters">参数字典,可为空</param> // <param name="requestUri">例如/api/Files/UploadFile</param> // <returns></returns> public async Task < string > Get(Dictionary < string, string > parameters, string requestUri, string token) { //从工厂获取请求对象 var client = httpClientFactory.CreateClient(); //添加请求头 if(!string.IsNullOrWhiteSpace(token)) { client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); } client.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8"); //拼接地址 if(parameters != null) { var strParam = string.Join("&", parameters.Select(o => o.Key + "=" + o.Value)); requestUri = string.Concat(requestUri, '?', strParam); } client.BaseAddress = new Uri(requestUri); return client.GetStringAsync(requestUri).Result; }
- 在
Startup.cs
中进行注册,这个注册可以存在多个。
services.AddHttpClient<classHttp>();
//注册之后,使用依赖注入的方式进行注入,进行使用。
源文:https://blog.csdn.net/WuLex/article/details/126389568