正确更改C#中不同调用的HttpClient标头
本文关键字:调用 HttpClient 标头 | 更新日期: 2023-09-27 17:58:42
我正在编写一个异步调用POST和GET的程序。我遇到的问题是,每个POST和GET有时都有不同的头/主机参数。
我在main()类外部初始化了HttpClient,在main类内部,我有以下
client.DefaultRequestHeaders.Add("Host", "website1.com");
对于另一个GET/POST请求,我希望在HOST参数中有website2
client.DefaultRequestHeaders.Add("Host", "website2.com");
但它们发生了碰撞,它抛出了一个错误,因为它已经存在了。处理这个问题的正确方法是什么?
使用SendAsync而不是GetAsync或PostAsync
var request = new HttpRequestMessage(HttpMethod.Get, new Uri("http://targeturi.com"));
request.Headers.Host = "website2.com"
var response = await client.SendAsync(request);
在发送
很明显,您应该使用两个单独的HttpClient实例,因为DefaultRequestHeaders不是线程安全的,因此您将在多线程情况下遇到问题。
有关更多详细信息,请参阅:HttpClient–它真的是线程安全的吗?