我目前正在使用System.Net.Http.HttpClient进行跨平台支持。
我读到,为每个请求实例化HttpClient对象并不是一个好习惯,并且应尽可能重用它。
现在我在为服务编写客户端库时遇到了问题。有些API调用需要有一个特定的标题,有些不得包含这个特定的标题。
似乎我只能操纵" DefaultRequestHeaders"将随每个请求发送。
实际发出请求时是否有选项,例如" client.PostAsync()"修改仅针对特定请求的标头?
(信息:请求可以是多线程的)。
提前致谢!
答案 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方法。