我正在编写一个异步进行POST和GET调用的程序。我遇到的问题是每个POST和GET有时会有不同的标头/主机参数。
我在我的main()类之外初始化了HttpClient,在我的主类里面我有以下内容,
client.DefaultRequestHeaders.Add("Host", "website1.com");
并且对于另一个GET / POST请求,我想在HOST参数中拥有website2,
client.DefaultRequestHeaders.Add("Host", "website2.com");
但它们发生碰撞并且因为它已经存在而引发错误。什么是正确的方法来解决这个问题?
答案 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?