.Net Core 使用IHttpClientFactory请求

  1. HttpClientFactory 创建的HttpClient,也即是HttpClientHandler,只是这些个HttpClient被放到了“池子”中,工厂每次在create的时候会自动判断是新建还是复用。(默认生命周期为2min,默认的生命周期可以修改)

第一种使用方式

  1. Startup.cs中进行注册

//注册http请求服务 services.AddHttpClient();

 

  1. 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;
}
  1. Startup.cs中进行注册,这个注册可以存在多个。
services.AddHttpClient<classHttp>();
//注册之后,使用依赖注入的方式进行注入,进行使用。

 

源文:https://blog.csdn.net/WuLex/article/details/126389568

posted @ 2022-09-23 11:33  BloggerSb  阅读(178)  评论(0)    收藏  举报