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

根据请求C#HttpClient PCL修改请求头,c#,.net,httpclient,portable-class-library,request-headers,C#,.net,Httpclient,Portable Class Library,Request Headers,我目前正在使用用于跨平台支持的 我读到为每个请求实例化一个HttpClient对象不是一个好的实践,您应该尽可能地重用它 现在,我在为服务编写客户端库时遇到了一个问题。有些API调用需要有一个特定的头,有些调用不能包含这个特定的头 似乎我只能操作“DefaultRequestHeaders”,它将随每个请求一起发送 在实际使用例如“client.PostAsync()”发出请求时,是否有选项仅修改特定请求的标题 (信息:请求可以是多线程的) 提前谢谢 是的,您可以创建一个新的HttpReques

我目前正在使用用于跨平台支持的

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

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

似乎我只能操作“DefaultRequestHeaders”,它将随每个请求一起发送

在实际使用例如“client.PostAsync()”发出请求时,是否有选项仅修改特定请求的标题

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


提前谢谢

是的,您可以创建一个新的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实例并将其传递给方法。

这不起作用,因为头是请求头,而不是内容头。哦,我的错误。。我在看
Get..
:}@DarrelMiller当客户端发出多条HttpRequestMessages时会发生什么?例如,需要在标头中传递一个访问令牌才能命中api,我发出请求,然后您发出请求(我们都是客户端站点的用户)-HttpClient实例在请求之间共享,因为它是静态的。假设我的请求比你的请求耗时更长,这会导致问题吗?@crizzwald-Nope。SendAsync方法是线程安全的。多个线程可以将各自的HttpRequestMessage实例发送到同一HttpClient实例。收到回复后,正确的任务将继续。你刚刚用这个该死的文档保存了我的一天,缺少这些信息@在我们的WebAPI书中有一章是关于HttpClient的。这是免费的,网上可能有一些有用的信息。