我正在与Flurl访问需要基于证书的身份验证的 API。我已经看到从这个帖子将证书添加到WebRequestHandler
并指示HttpClient
使用这个处理程序很容易。
然而,我对 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
使用配置HttpClient
var clientFactory = new DefaultHttpClientFactory();
FlurlClient fc = new Url("foobar.com").ConfigureHttpClient(client => client = clientFactory
.CreateClient(url, handler));
这似乎是最可行的选择,但我不确定,因为代表是Action
没有返回类型。
问题
使用 Flul 支持客户端证书身份验证的最佳/正确方法是什么?