Search code examples
c#asp.nethttp-headersdotnet-httpclient

Custom header to HttpClient request


How do I add a custom header to a HttpClient request? I am using PostAsJsonAsync method to post the JSON. The custom header that I would need to be added is

"X-Version: 1"

This is what I have done so far:

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri("https://api.clickatell.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = client.PostAsJsonAsync("rest/message", svm).Result;
}

Solution

  • var request = new HttpRequestMessage {
        RequestUri = new Uri("[your request url string]"),
        Method = HttpMethod.Post,
        Headers = {
            { "X-Version", "1" } // HERE IS HOW TO ADD HEADERS,
            { HttpRequestHeader.Authorization.ToString(), "[your authorization token]" },
            { HttpRequestHeader.ContentType.ToString(), "multipart/mixed" },//use this content type if you want to send more than one content type
        },
        Content = new MultipartContent { // Just example of request sending multipart request
            new ObjectContent<[YOUR JSON OBJECT TYPE]>(
                new [YOUR JSON OBJECT TYPE INSTANCE](...){...}, 
                new JsonMediaTypeFormatter(), 
                "application/json"), // this will add 'Content-Type' header for the first part of request
            new ByteArrayContent([BINARY DATA]) {
                Headers = { // this will add headers for the second part of request
                    { "Content-Type", "application/Executable" },
                    { "Content-Disposition", "form-data; filename=\"test.pdf\"" },
                },
            },
        },
    };