Я работаю с Flurl, чтобы попасть в API, требующий аутентификации на основе сертификатов. Я видел от this SO post, что добавление сертификата в WebRequestHandler
и указание HttpClient
использовать этот обработчик легко.C# Flurl - Добавить WebRequestHandler в FlurlClient
Однако для меня это не так понятно, используя Flurl. Я попробовал три вещи.
Расширение DefaultHttpFactory
я первый подозревал, что мне нужно, чтобы создать свой собственный X509HttpFactory : DefaultHttpFactory
, который создаст обработчик и назначить его на HttpClient
. Однако при просмотре источника я замечаю, что конструктор для CreateClient
уже ожидает обработчик. Откуда этот обработчик?
Создание клиента с помощью DefaultHttpFactory
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(myX509Cert);
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = clientFactory.CreateClient(url, handler);
Это не компилируется, как HttpClient
не может быть преобразован в FlurlClient
Используйте ConfigureHttpClient
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = new Url("foobar.com").ConfigureHttpClient(client => client = clientFactory
.CreateClient(url, handler));
Это кажется наиболее приемлемым вариантом , bu t Я не уверен, поскольку делегат является Action
без возврата типа.
Вопрос
Что такое лучший/правильный способ для поддержки проверки подлинности сертификатов на стороне клиента с помощью Flurl?
Спасибо. Удивительная библиотека! –