有一个类似的SO question here讨论了HttpClient
对象的性能,并建议每个应用程序使用一个HttpClient
实例。我的项目要求我向同一个URI发送多个Web服务请求,但每个请求都具有不同的标头集。我应该为每个请求创建一个新的HttpClient
实例,但要知道,如果使用DefaultRequestHeaders
实例,static
对于所有请求都是相同的。
答案 0 :(得分:1)
您可以:
文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1
在这里创建一个客户端实例,并添加将应用于所有请求的标头。
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Content-Type", contentTypeValue);
在这个dotnet core 2.1示例中,我们注册了一个预配置的命名实例:
services.AddHttpClient("github", c =>
{
c.BaseAddress = new Uri("https://api.github.com/");
// Github API versioning
c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
// Github requires a user-agent
c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
});
如果您的标头仅属于一个请求,则可以为每个请求简单地设置它们。
var client = new HttpClient();
var request = new HttpRequestMessage();
request.Headers.Add("Content-Type", "text/plain");
var response = await client.SendAsync(request);
使用这种方法,您可以使用共享的HttpClient
实例。对于asp.net core 2.1,推荐的方法似乎是注入IHttpClientFactory
并使用_clientFactory.CreateClient()
来获得HttpClient
实例。