我正在与Flurl一起使用需要基于证书的身份验证的 API。我从这篇 SO 帖子中看到,向 a 添加证书WebRequestHandler
并指示 aHttpClient
使用此处理程序很容易。
但是,对我来说使用 Flurl 并不是很清楚。我已经尝试了以下三件事。
扩展 DefaultHttpFactory
我首先怀疑我需要创建自己的X509HttpFactory : DefaultHttpFactory
来创建处理程序并将其分配给HttpClient
. 但是,在查看源代码时,我注意到 for 的构造函数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));
这似乎是最可行的选择,但我不确定,因为委托是Action
没有返回类型的。
问题
使用 Flurl 支持客户端证书身份验证的最佳/正确方法是什么?