Изменить заголовки запросов на запрос С# 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.