Modify request headers per request C# HttpClient PCL

笑着哭i 提交于 2019-11-29 02:14:34

问题


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!


回答1:


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);



回答2:


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



来源:https://stackoverflow.com/questions/23521626/modify-request-headers-per-request-c-sharp-httpclient-pcl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!