修改请求头每个请求c# HttpClient PCL

本文关键字:请求 HttpClient PCL 修改 | 更新日期: 2023-09-27 18:02:06

我目前正在使用System.Net.Http.HttpClient进行跨平台支持。

我读到,为每个请求实例化一个HttpClient对象不是一个好的做法,你应该尽可能重用它。

现在我在为服务编写客户端库时遇到了一个问题。一些API调用需要有一个特定的头,一些必须不包含这个特定的头。

似乎我只能操纵"DefaultRequestHeaders",这将与每个请求发送。

是否有一个选项,当实际发出请求时,例如:"client.PostAsync()"修改头仅为特定的请求?

(信息:请求可以是多线程的)。

提前感谢!

修改请求头每个请求c# HttpClient PCL

是的,你可以创建一个新的HttpRequestMessage,设置所有你需要的属性,然后传递给SendAsync。

var request = new HttpRequestMessage() {
   RequestUri = new Uri("http://example.org"),
   Method = HttpMethod.Post,
   Content = new StringContent("Here is my content")
}
request.Headers.Accept.Add(...);  // Set whatever headers you need to
var response = await client.SendAsync(request);

使用HttpContent.Headers。只需创建HttpContent实例,并将其传递给PostAsync方法。