Reputation: 89
Should I still add my headers to HttpRequestMessageif I already have add on my httpclient headers? what is the difference of adding from httpclient first and then requestMessage?
like this:
public static async Task<JsonDocument> ParseJsonData(string api, string method, CancellationToken cancellationToken)
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
client.DefaultRequestHeaders.Add("Accept", "text/html,application/xml,application/json");
client.DefaultRequestHeaders.Add("Accept-Language", "en-us,en;q=0.5");
client.DefaultRequestHeaders.UserAgent.ParseAdd(UserAgent);
var uri = new Uri(api, UriKind.Absolute);
var Method = new HttpMethod(method);
using (var request = new HttpRequestMessage(Method, uri))
{
cancellationToken.ThrowIfCancellationRequested();
request.RequestUri = uri;
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Pragma.ParseAdd("no-cache");
request.Headers.Add("Cache-Control", "no-cache");
request.Headers.Connection.ParseAdd("keep-alive");
request.Headers.UserAgent.ParseAdd(UserAgent);
switch (Method.ToString().ToUpper())
{
case "POST":
string loginInfo = "{\"login_id\": \"" + credential.username +
"\", \"password\": \"" + credential.password + "\"}";
using (var content = new StringContent(loginInfo, Encoding.UTF8, "text/plain"))
{
request.Content = content;
return await ResponseMessage(request, cancellationToken);
}
case "GET":
{
return await ResponseMessage(request, cancellationToken);
}
}
Upvotes: 1
Views: 3468
Reputation: 30031
Both collections are merged when sending a request. If there's a duplicate header, both will be sent out.
Upvotes: 2