时间:2021-05-28
IHttpClientFactory有四种模式:
在 Startup.ConfigureServices 方法中,通过在 IServiceCollection 上调用 AddHttpClient 扩展方法可以注册 IHttpClientFactory
services.AddHttpClient();注册之后可以像依赖注入DI似得在类中通过构造函数注入形式使用,伪代码:
class A{ private readonly IHttpClientFactory _clientFactory; public A(IHttpClientFactory clientFactory) { _clientFactory = clientFactory; } Public void Use() { var request=new HttpRequestMessage(HttpMethod.Get,"/api,然后再把GetMessageAsync方法上面的MyInterFace改为b即可。个人理解为请求返回前处理程序,就是继承 DelegatingHandler派生类重写SendAsync 方法。在将请求传递至管道中的下一个处理程序之前执行代码:
public class ValidateHeaderHandler : DelegatingHandler{ protected override async Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { if (!request.Headers.Contains("X-API-KEY")) { return new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent( "You must supply an API key header called X-API-KEY") }; } return await base.SendAsync(request, cancellationToken); }}然后在ConfigureServices中:
services.AddTransient<ValidateHeaderHandler>();//注册处理程序services.AddHttpClient("externalservice", c =>{ // Assume this is an "external" service which requires an API KEY c.BaseAddress = new Uri("https://localhost:5000/");}).AddHttpMessageHandler<ValidateHeaderHandler>();/注入到http请求管道可以同时注册多个处理程序。
每次对 IHttpClientFactory 调用 CreateClient 都会返回一个新 HttpClient 实例。 每个命名的客户端都具有一个 HttpMessageHandler。 工厂管理 HttpMessageHandler 实例的生存期。
HttpClient实例不是与HttpMessageHandler一起销毁的,HttpMessageHandler在池中生存,如果生命周期未到不会被销毁,会被新的HttpClient 实例使用。
处理程序的默认生存周期是2分钟,可以通过配置修改:
services.AddHttpClient("extendedhandlerlifetime") .SetHandlerLifetime(TimeSpan.FromMinutes(5));总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下:get请求
如何在WinForm中请求发送HTTP手工发送HTTP请求主要是调用System.Net的HttpWebResponse方法手工发送HTTP的GET请求:str
如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。Java有原生的API可用于发送HTTP请求,即java.net.U
详解http请求中的Content-Typehttp头部字段Content-Type约定请求和响应的HTTPbody内容编码类型,客户端和服务端根据http头部
详解Http请求中Content-Type讲解以及在SpringMVC中的应用引言:在Http请求中,我们每天都在使用Content-type来指定不同格式的请