Come faccio a impostare più intestazioni usando PostAsync in C#?

Come faccio a impostare più intestazioni usando PostAsync in C#?

Puoi accedere al Headers proprietà tramite il StringContent :

var content = new StringContent(Request, Encoding.UTF8, header);
content.Headers.Add(...);

Quindi passa StringContent a PostAsync chiama:

response = client.PostAsync(Url, content).Result;

Ho smesso di usare i metodi Post/Get *Async a favore del SendAsync(...) metodo e HttpRequestMessage Send Async è il fratello maggiore che ti offre la piena flessibilità che altrimenti non potresti ottenere.

using System.Net.Http;

var httpRequestMessage = new HttpRequestMessage();

httpRequestMessage.Method = httpMethod;
httpRequestMessage.RequestUri = new Uri(url);

httpRequestMessage.Headers
                  .UserAgent
                  .Add(new Headers.ProductInfoHeaderValue(
                                              _applicationAssembly.Name, 
                                              _applicationAssembly.Version.ToString()));

HttpContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");
switch (httpMethod.Method)
{
    case "POST":
        httpRequestMessage.Content = httpContent;
        break;
}

var result = await httpClient.SendAsync(httpRequestMessage);
result.EnsureSuccessStatusCode();

Puoi anche usare

var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("headername","headervalue");

Se vuoi impostare solo una volta le intestazioni sulla classe HttpClient. Ecco i documenti MSDN su DefaultRequestHeaders.TryAddWithoutValidation