当前位置: 首页 > 编程语言 > C#

C#Flurl-添加WebRequestHandler到FlurlClient分享

时间:2023-04-11 01:18:23 C#

C#Flurl-添加WebRequestHandler到FlurlClient我从这篇SO帖子中了解到,将证书添加到WebRequestHandler并指示HttpClient使用此处理程序很容易。但是,使用Flurl对我来说不是很清楚。我尝试了以下三件事。扩展DefaultHttpFactory我首先怀疑我需要创建自己的X509HttpFactory:DefaultHttpFactory,它将创建处理程序并将它们分配给HttpClient。但是,在查看源代码时,我注意到CreateClient的构造函数已经需要一个处理程序。这个处理程序来自哪里?使用DefaultHttpFactory创建客户端WebRequestHandlerhandler=newWebRequestHandler();handler.ClientCertificates.Add(myX509Cert);varclientFactory=newDefaultHttpClientFactory();FlurlClientfc=clientFactory.CreateClient(url,handler);因此不能使用ConfigureHttpClientvarclientFactory=newDefaultHttpClientFactory();转换为CompileFlurlClientfc=newUrl("foobar.com").ConfigureHttpClient(client=>client=clientFactory.CreateClient(url,handler));这似乎是最可行的选择,但我不确定,因为委托是一个没有返回类型的Action。问题使用Flurl支持客户端证书身份验证的最佳/正确方法是什么?您很接近-定制工厂绝对是您的不二之选。但你想要覆盖CreateMessageHandler而不是CreateClient:publicclassX509HttpFactory:DefaultHttpClientFactory{privatereadonlyX509Certificate2_cert;publicX509HttpFactory(X509Certificate2cert){_cert=cert;}publicoverrideHttpMessageHandlerCreateMessageHandler(){varhandler=newWebRequestHandler();处理程序。ClientCertificates.Add(_cert);返回处理程序;然后你可以全局注册它(在应用程序启动时):FlurlHttp.Configure(settings=>{settings.HttpClientFactory=newX509HttpFactory(myCert);});或针对主机的特定所有调用:FlurlHttp.ConfigureClient(ROOT_URL,cli=>{cli.Settings.HttpClientFactory=newX509HttpFactory(myCert);});或者对于新的FlurlClient:varcli=newFlurlClient(url).Configure(settings=>settings.HttpClientFactory=newX509HttpFactory(myCert));还是已有的:以上是C#学习教程:C#Flurl–添加WebRequestHandlerFlurlClient分享的所有内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——cli.Settings.HttpClientFactory=newX509HttpFactory(myCert);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: