Изменить заголовки запросов на запрос С# HttpClient PCL

В настоящее время я использую System.Net.Http.HttpClient для кросс-платформенной поддержки.

Я читал, что не рекомендуется создавать экземпляр объекта HttpClient для каждого запроса и что вы должны его повторно использовать, когда это возможно.

Теперь у меня возникла проблема при написании клиентской библиотеки для службы. Некоторые вызовы API должны иметь определенный заголовок, некоторые НЕ ДОЛЖНЫ включать этот конкретный заголовок.

Кажется, что я могу манипулировать только "DefaultRequestHeaders", который будет отправляться с каждым запросом.

Есть ли опция, когда фактически выполняется запрос, например. "client.PostAsync()" для изменения заголовков только для конкретного запроса?

(информация: запросы могут быть многопоточными).

Спасибо заранее!

Ответ 1

Да, вы можете создать новый HttpRequestMessage, установить все необходимые свойства и передать его в SendAsync.

var request = new HttpRequestMessage() {
   RequestUri = new Uri("http://example.org"),
   Method = HttpMethod.Post,
   Content = new StringContent("Here is my content")
}
request.Headers.Accept.Add(...);  // Set whatever headers you need to

var response = await client.SendAsync(request);

Ответ 2

Используйте HttpContent.Headers. Просто создайте экземпляр HttpContent с необходимыми заголовками и передайте его метод PostAsync.