【发布时间】:2019-05-24 18:06:29
【问题描述】:
我注意到在修改 HttpClient.DefaultRequestHeaders 时使用 HttpClient 不是线程安全的,但我想发出尽可能多的请求。 每个请求我都需要一个自定义标头(其他 2 个标头始终相同)。网址也发生了一些变化
- http://example.com/books/1234/readers/837
- http://example.com/books/854/readers/89
- http://example.com/books/29432/readers/238
- ... 以此类推
目前我正在为每个请求创建一个新的 HttpClient,但我觉得创建 10k+ HttpClient 并不是最好的选择。
我想制作一个带有 2 个 DefaultRequestHeaders 的静态 HttpClient,并为每个请求使用这个 HttpClient,但还要添加一个自定义标头。
我想尽可能快地完成这个,所以如果你有别的东西我会接受的。
Parallel.ForEach(Requests, Request =>
{
var Client = new HttpClient();
Client.DefaultRequestHeaders.Clear();
Client.DefaultRequestHeaders.Add("Header1", "Value1");
Client.DefaultRequestHeaders.Add("Header2", "Value2");
Client.DefaultRequestHeaders.Add("Header3", "Value for exact this request");
var response = Client.PutAsync(new Uri($"http://example.com/books/1234/readers/837"), null); //.Result (?)
Client.Dispose();
});
【问题讨论】:
标签: c# request header httpclient