Добавьте дайджест-аутентификацию на клиент, созданный IHttpFactory

Я строю API, который предоставляет конечную точку POST, которая принимает в запросе детали среды, содержащие ключи, которые сопоставляются с URIS). Затем этот API в зависимости от переданных данных запроса будет отправлять запросы POST другим API.

До сих пор базовый URI клиента был статическим, теперь URI является динамическим и передается из входящего запроса.

HttpClient встроен в класс Service при внедрении через конструктор.

Как я могу добавить CredentialsCache на клиенте, который уже был построен конструктором, и перемещать логику от запуска до запроса по требованию?

В настоящее время зарегистрирован при запуске с использованием метода расширения

public static IServiceCollection AddUnderTest(this IServiceCollection services, ClientA settings)
    {
        var client = services
            .AddHttpClient(
            nameof(ClientA),
            c => { c.DefaultRequestHeaders.Add("Cache-Control", "no-cache"); });

        client.ConfigurePrimaryHttpMessageHandler(
            handler => new HttpClientHandler
            {
                Credentials = new CredentialCache { {
                    new Uri(""),
                    "Digest",
                    new NetworkCredential(settings.Username, settings.Password) } }
            });
        return services;
    }

в классе обслуживания

public class MyService
{

    public MyService(IHttpClientFactory htpClientFactory)
    {
        var myClient = htpClientFactory.CreateClient("ClientA");
        //add digest auth and credentials here, and not on startup
    }
}

Как я могу добавить ту же конфигурацию, что и в расширении metaon при запуске?

0 ответов

Другие вопросы по тегам