正确更改C#中不同调用的HttpClient标头?

时间:2016-07-25 16:19:52

标签: c# dotnet-httpclient

我正在编写一个异步进行POST和GET调用的程序。我遇到的问题是每个POST和GET有时会有不同的标头/主机参数。

我在我的main()类之外初始化了HttpClient,在我的主类里面我有以下内容,

client.DefaultRequestHeaders.Add("Host", "website1.com");

并且对于另一个GET / POST请求,我想在HOST参数中拥有website2,

client.DefaultRequestHeaders.Add("Host", "website2.com");

但它们发生碰撞并且因为它已经存在而引发错误。什么是正确的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用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);

您可以在发送之前为请求添加任意数量的标题

答案 1 :(得分:0)

很明显,您应该使用两个单独的HttpClient实例,因为DefaultRequestHeaders并不是安全的线程,因此,您将在多线程情况下遇到问题。

查看更多详细信息:HttpClient–Is It Really Thread-Safe?