Добавьте дайджест-аутентификацию на клиент, созданный IHttpFactory - PullRequest
0 голосов
/ 30 января 2019

Я создаю 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
    }
}

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

...