gpt4 book ai didi

c# - 使用 IHttpClientFactory 为每个请求设置请求 header

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:25 26 4
gpt4 key购买 nike

我正在使用带有 IHttpClientFactory 的类型化客户端。像这样:

// Startup.cs
services.AddHttpClient<MyHttpClient>()

// MyHttpClient.cs
public class MyHttpClient
{
public MyHttpClient(HttpClient client)
{
Client = client;
}

public HttpClient Client { get; }
}

// MyService.cs
public class MyService {
public MyService(MyHttpClient httpClient) {}

public async Task SendRequestAsync(string uri, string accessToken) {
_httpClient.Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
await _httpClient.Client.GetAsync(uri);
}
}

我不确定这是如何工作的。请求 header 是仅为该请求设置的,还是为使用此 httpClient 实例发出的每个后续请求设置的。如何根据每个请求设置 header ?

最佳答案

您可以使用 DelegatingHandlerHttpClient 将发出的每个请求添加 header 。

public class HeaderHandler: DelegatingHandler
{
public HeaderHandler()
{
}
public HeaderHandler(DelegatingHandler innerHandler): base(innerHandler)
{
}

protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Headers.Add("CUSTOM-HEADER","CUSTOM HEADER VALUE");
return await base.SendAsync(request, cancellationToken);
}
}

您使用以下方法注册处理程序:

service.AddTransient<HeaderHandler>()
.AddHttpClient<MyHttpClient>()
.AddHttpMessageHandler<HeaderHandler>();

关于c# - 使用 IHttpClientFactory 为每个请求设置请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52480048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com