HttpClient отправляет Auth заголовок - PullRequest
1 голос
/ 17 апреля 2020

Я использую HttpClient для вызова некоторого REST API с аутентификацией, подобной этой:

_networkCredential = new NetworkCredential(username, apiKey);
_httpClientHandler = new HttpClientHandler { Credentials = _networkCredential };
_httpClient = new HttpClient(_httpClientHandler);

Это работает хорошо, но, как определено в RFC2617, это будет отправлять каждый запрос без заголовка AUTH, возвращает 401, а затем отправляет запрос во второй раз с заголовком AUTH.

Я бы хотел избавиться от дополнительного вызова без заголовка AUTH для достижения лучшей пропускной способности. Для BASI C AUTH я нашел следующий пример для ручного добавления заголовка BASI C AUTH к каждому вызову:

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{apiKey}")));

Но моя служба настаивает на DIGEST AUTH. Как я могу добиться этого в DIGEST AUTH?

Я бы предположил, что мне придется один раз вызвать службу и кэшировать AUTH HEADER для последующих вызовов. Но если одноразовый номер изменится, мне нужно будет обновить sh AUTH HEADER? Как это можно решить?

...