47

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

我读到为每个请求实例化一个 HttpClient 对象不是一个好习惯,并且您应该尽可能重用它。

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

看来我只能操纵将随每个请求发送的“DefaultRequestHeaders”。

在实际使用例如“client.PostAsync()”发出请求时是否有一个选项可以仅为特定请求修改标头?

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

提前致谢!

4

2 回答 2

75

是的,您可以创建一个新的 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);
于 2014-05-07T15:39:12.180 回答
1

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

于 2014-05-07T15:43:16.493 回答