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

coa*_*mee 32 .net c# httpclient request-headers portable-class-library

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

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

现在我在为服务编写客户端库时遇到问题.某些API调用需要具有特定标头,有些必须不包含此特定标头.

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

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

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

提前致谢!

Dar*_*ler 58

是的,您可以创建一个新的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);
Run Code Online (Sandbox Code Playgroud)

  • @crizzwald没有 SendAsync方法是线程安全的。多个线程可以各自将其自己的HttpRequestMessage实例发送到同一HttpClient实例。收到响应后,正确的任务将继续。 (3认同)
  • 你刚刚用这个拯救了我的一天,该死的文档缺乏这些信息!! (2认同)