大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎么在HttpClient中添加默认请求报头?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、虚拟主机、营销软件、网站建设、濉溪网站维护、网站推广。第一种方式
直接在创建的HttpClient对象的DefaultRequestHeaders集合中添加报头。
class Program { static Task Main()=> SendAsync1(); private static async Task SendAsync1() { var httpClient = new HttpClient(); AddDefaultHeaders(httpClient); await httpClient.GetStringAsync("http://localhost:5000/"); } private static void AddDefaultHeaders(HttpClient httpClient) { httpClient.DefaultRequestHeaders.Add("x-www-foo", "123"); httpClient.DefaultRequestHeaders.Add("x-www-bar", "456"); httpClient.DefaultRequestHeaders.Add("x-www-baz", "789"); } }
第二种方式
对于.NET Core应用来说,我们更推荐的做法是采用依赖注入的方式,利用IHttpClientFactory来创建HttpClient对象,那么我们在进行相关服务注册的时候就可以设置默认请求报头。
class Program { static Task Main()=> SendAsync2(); private static async Task SendAsync2() { var services = new ServiceCollection(); services.AddHttpClient("", AddDefaultHeaders); var httpClient = services .BuildServiceProvider() .GetRequiredService() .CreateClient(); await httpClient.GetStringAsync("http://localhost:5000/"); } private static void AddDefaultHeaders(HttpClient httpClient) { httpClient.DefaultRequestHeaders.Add("x-www-foo", "123"); httpClient.DefaultRequestHeaders.Add("x-www-bar", "456"); httpClient.DefaultRequestHeaders.Add("x-www-baz", "789"); } }
第三种方式
由于HttpClient在发送请求的时候会利用DiagnosticSource对象发送相应的诊断事件,并且将作为请求的HttpRequestMessage对象作为请求事件内容负载。我们可以订阅该事件,在请求被发送之前将其拦截下来,并添加相应的请求头即可。
class Program { static Task Main()=> SendAsync3(); private static async Task SendAsync3() { Func
第四种方式
上面这种方式可以采用强类型编程方式,具体的代码如下。
class Program { static Task Main()=> SendAsync4(); private static async Task SendAsync4() { DiagnosticListener.AllListeners.Subscribe(listener => { if (listener.Name == "HttpHandlerDiagnosticListener") { listener.SubscribeWithAdapter(new HttpClientListener()); } }); var httpClient = new HttpClient(); await httpClient.GetStringAsync("http://localhost:5000/"); } private sealed class HttpClientListener { [DiagnosticName("System.Net.Http.HttpRequestOut.Start")] public void OnSend(HttpRequestMessage request) => AddDefaultHeaders(request); //Must subscribute the System.Net.Http.HttpRequestOut event. [DiagnosticName("System.Net.Http.HttpRequestOut")] public void OnSend() { } } private static void AddDefaultHeaders(HttpRequestMessage request) { request.Headers.Add("x-www-foo", "123"); request.Headers.Add("x-www-bar", "456"); request.Headers.Add("x-www-baz", "789"); } }
看完上述内容,你们掌握怎么在HttpClient中添加默认请求报头的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!