Я создаю 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 при запуске?