I'm currently using the System.Net.Http.HttpClient for cross platform support.

I read that it is not a good practice to instantiate a HttpClient object for each request and that you should reuse it whenever possible.

Now I have a problem while writing a client library for a service. Some API calls need to have a specific header, some MUST not include this specific header.

It seems that I can only manipulate the "DefaultRequestHeaders" which will be send with each request.

Is there an option when actually making the request with e.g. "client.PostAsync()" to modify the headers only for the specific request?

(Info: Requests can be multi threaded).

Thanks in advance!

有帮助吗?

解决方案

Yes, you can create a new HttpRequestMessage, set all the properties you need to, and then pass it to 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);

其他提示

Use HttpContent.Headers. Simply create HttpContent instance with required headers and pass it to PostAsync method.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top