根据请求修改请求标头C#HttpClient PCL

时间:2014-05-07 15:11:35

标签: c# .net httpclient portable-class-library request-headers

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

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

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

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

实际发出请求时是否有选项,例如" client.PostAsync()"修改仅针对特定请求的标头?

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

提前致谢!

2 个答案:

答案 0 :(得分:52)

是的,你可以创建一个新的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);

答案 1 :(得分:1)

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