Я использую 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? Как это можно решить?