Search code examples
c#.nethttp-headershttpclienthttpcontent

HttpClient headers vs HttpContent headers


In c# why both HttpClient and HttpContent have headers. What is difference between them. When should I use client headers and when content headers ?

CODE EXAMPLE:

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Test header", "content");

HttpContent content = new StringContent("text", Encoding.UTF8, "application/json");
content.Headers.Add("TestHeader", "Header Content");

await client.PostAsync("url", content);

Solution

  • HttpClient supports several types of content. For example:

    • System.Net.Http.ByteArrayContent
    • System.Net.Http.Json.JsonContent
    • System.Net.Http.MultipartContent
    • System.Net.Http.ReadOnlyMemoryContent
    • System.Net.Http.StreamContent

    For a complete list of supported content, see HttpContent.

    HttpContent contains some more specific headers about the content, including the content type.

    I think this list here can give you a pretty good understanding on what headers that are available. I do agree that having jus one set of headers would make things much easier.