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!
var client = new RestClient("http://url.../token"); var request = new RestRequest(Method. POST); request. AddHeader("content-type", "application/x-www-form-urlencoded"); request. AddParameter("application/x-www-form-urlencoded", "grant_type=password&username=username&password=password", ParameterType.
In versions pre 4.3 of HttpClient, we can set any custom header on a request with a simple setHeader call on the request: HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(SAMPLE_URL); request. setHeader(HttpHeaders. CONTENT_TYPE, "application/json"); client.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With