Заголовки запроса в C#
Общие заголовки клиента лежат в
DefaultRequestHeaders и уходят с каждым его
запросом. Имена вроде "Content-Length" сюда не
ставят: их задаёт само тело HttpContent.
Имя и значение добавляют вызовом
TryAddWithoutValidation. Он не проверяет,
входит ли имя в стандартный список. Так ставят
и обычный Accept, и свой заголовок. С
"Accept: text/html" ответ example.com
остаётся HTML, длина тела больше нуля:
using HttpClient client = new();
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html");
string text = await client.GetStringAsync("https://example.com/");
Console.WriteLine(text.Length > 0);
Пользовательский "X-Trace" уходит на сервер;
httpbin отражает его в JSON ответа:
using HttpClient client = new();
client.DefaultRequestHeaders.TryAddWithoutValidation("X-Trace", "alpha-7");
string text = await client.GetStringAsync("https://httpbin.org/headers");
Console.WriteLine(text.Contains("alpha-7"));
Добавьте "Accept-Language: en" и
проверьте через httpbin, что заголовок виден в
ответе.