Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.
This is when I use HttpClient with .NET 4.5 and try something like:
client.DefaultRequestHeaders.Add("Contact-Type", ...);
And so began a long and painful journey to figure out to to fix this because the external web API wouldn't work without "Content-Type" as a header.
There is so much garbage out there :-(
After some research, Content-Type is part of Content - the name pretty much implies that - so use HttpContent.
using (var client = new HttpClient())
{
// Adding contentType to client as header gives "Misused header name. Make sure request headers are used
with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent
// objects."
client.DefaultRequestHeaders.Add("Authorization", "Bearer abc...123");
HttpResponseMessage response;
// Construct an HttpContent from the data
HttpContent hc = new StringContent(data);
hc.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response = client.PostAsync(baseAddress, hc).Result;
response.EnsureSuccessStatusCode();
var result = response.Content.ReadAsStringAsync().Result;
}
Enjoy!