为HttpClient开启HTTP/2

这篇具有很好参考价值的文章主要介绍了为HttpClient开启HTTP/2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

.Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 。

为HttpClient开启HTTP/2

 

 

配置 HttpClient 以使用 HTTP/2 h2 连接

自 .NET Core 3.0 发布以来, .NET 开发人员可以使用 HttpClient 启用 HTTP/2 。

为HttpClient开启HTTP/2

 

设置 HTTP/2 的方法

DefaultRequestVersion和DefaultVersionPolicy选项在HttpClient对象本身上可用。这些属性将应用于通过常规 HttpClient 方法(如GetAsync、PostAsync、PatchAsync或PutAsync )完成的所有请求。

 

直接设置

var client = new HttpClient();
client.DefaultRequestVersion = HttpVersion.Version20;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;

DI

builder.Services.AddHttpClient("h2multiconnnections", httpclient =>
{
    httpclient.DefaultRequestVersion = HttpVersion.Version20;
    httpclient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
})

 

HTTPRequestMessage

如果您使用Send或SendAsync方法,您必须在其中传递HttpRequestMessage的实例,则需要在 HttpRequestMessage 实例上设置Version和VersionPolicy属性。

var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Version = HttpVersion.Version20;
request.VersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
var response = await _client.SendAsync(request);

 

配置 HttpClient 以使用 HTTP/2 的多个连接

在 .NET 5.0 和 .NET 6.0 中,HttpClient 默认配置为仅打开 1 个到 HTTP/2 服务器的连接。另外,最大并发流数的推荐值为100。

在某些情况下,出于性能原因,如果您在短时间内发送数千个请求,则可能需要与服务器建立 1 个以上的连接。出于这个原因,在 .NET 5.0 中,Microsoft在SocketsHttpHandler类上引入了EnableMultipleHttp2Connections属性,使开发人员能够根据需要更改默认行为。

builder.Services.AddHttpClient("h2multiconnnections", httpclient =>
{
    httpclient.DefaultRequestVersion = HttpVersion.Version20;
    httpclient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
})
.ConfigurePrimaryHttpMessageHandler(() =>
  new SocketsHttpHandler
  {
      EnableMultipleHttp2Connections = true
  });

 

HTTP/3

在 .NET 6 中,HTTP/3 可作为预览功能使用,因为 HTTP/3 规范尚未最终确定。带有 .NET 6 的 HTTP/3 中可能存在行为或性能问题。

https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-6#http3

https://learn.microsoft.com/zh-cn/dotnet/core/extensions/httpclient-http3

https://www.siakabaro.com/use-http-2-with-httpclient-in-net-6-0/文章来源地址https://www.toymoban.com/news/detail-427914.html

到了这里,关于为HttpClient开启HTTP/2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot + seata + httpclient调用

    三个项目,彼此使用seata自带的httpclient来完成相互调用,三个项目分别是:seata_user、seata_msg、seata_online,对应三个数据库。其中seata_online是调用入口,分别调用seata_user、seata_msg,其中当参数等于5的时候,会抛出异常,3个数据库均回滚事务;参数不等于5的时候,3个数据库正

    2023年04月11日
    浏览(26)
  • java 远程调用 httpclient 调用https接口 忽略SSL认证

    httpclient 调用https接口,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。下面是忽略校验过程的代码类:SSLClient  然后再调用的远程get、post请求中使用SSLClient 创建Httpclient ,代码如下:

    2024年02月11日
    浏览(41)
  • Java中常见的几种HttpClient调用方式

    一、HttpURLConnection调用 方式一: 方式二: 缺点:不能直接使用池化技术,需要自行处理输入输出流 二、apache common封装HttpClient 引入依赖 实现 三、CloseableHttpClient 可以使用连接池保持连接,并且过期自动释放。引入jar包 引入依赖 实现 非连接池连接: 四、OkHttp3 引入依赖 实

    2024年02月04日
    浏览(55)
  • 【Angular中的HTTP请求】- HttpClient 详解

            大多数前端应用都要通过 HTTP 协议与服务器通讯,才能下载或上传数据并访问其它后端服务。Angular 给应用提供了一个 HTTP 客户端 API,也就是 @angular/common/http 中的 HttpClient 服务类。         要想使用 HttpClient ,就要先导入 Angular 的 HttpClientModule 。一般都是在根

    2024年02月08日
    浏览(39)
  • R语言【cli】——通常,您调用cli_process_start()来启动进程,然后在完成后调用cli_process_done()。

    Package  cli  version 3.6.0 参数【msg】 :要显示的用于指示进程或计算开始的消息。它将被折叠成一个字符串,第一行将被保留并剪切为 console_width() 。 参数【msg_done】 :用于成功终止的消息。 参数【msg_failed】 :用于不成功终止的消息。 参数【on_exit】 :当调用函数(或 参数【

    2024年01月19日
    浏览(33)
  • postman,浏览器测试接口正常,HttpClient 调用就报错

    一次奔溃的经历 事情是这样的:第三方提供了一个接口需要对接,我就对接了,测试环节的时候怎么都调不通,各种排查,各方人员都动员了起来,就是没有找到问题,下面把问题报错的原因呈上: 就是报错 508 ,返回一个空的 Response body. 刚开始出现这个问题,我怀疑是不

    2024年02月01日
    浏览(40)
  • HttpClient:HTTP GET请求的服务器响应输出

    前言 在现代软件开发中,与网络通信相关的技术变得愈发重要。Java作为一种强大而灵活的编程语言,提供了丰富的工具和库,用于处理各种网络通信场景。本文将聚焦在Java中使用HttpClient库发送HTTP GET请求,并将服务器的响应数据进行输出,同时加入代理服务器的配置,以应

    2024年02月20日
    浏览(45)
  • WebClient, HttpClient, OkHttp: 三个Java HTTP客户端的比较

    在Java世界中,有许多用于发送HTTP请求的库。在本文中,我们将重点介绍并比较三种流行的HTTP客户端:WebClient,HttpClient和OkHttp。我们将通过讲解它们的基本概念,使用方法和示例,以及它们的优缺点,帮助你选择最适合你的HTTP客户端。 WebClient是Spring 5中引入的非阻塞,反应

    2024年02月08日
    浏览(40)
  • 【微软技术栈】C#.NET 使用 HttpClient 类发出 HTTP 请求

    创建 HttpClient 发出 HTTP 请求 处理 HTTP 响应 HTTP 错误处理 HTTP 代理 本文介绍如何使用  HttpClient  类发出 HTTP 请求和处理响应。  重要 所有示例 HTTP 请求都以下面 URL 之一为目标: https://jsonplaceholder.typicode.com:用于测试和原型设计的免费虚设 API。 https://www.example.com:此域用于

    2024年02月04日
    浏览(37)
  • 扔掉okhttp、httpClient,这款轻量级 HTTP 神器好用到爆

    前言 功能特性 快速使用 HTTP请求相关注解 配置项说明 高级功能 全局拦截器 调用适配器和数据转码器 总结 在 SpringBoot 项目直接使用 okhttp 、 httpClient 或者 RestTemplate 发起 HTTP 请求,既繁琐又不方便统一管理。因此,在这里推荐一个适用于 SpringBoot 项目的轻量级HTTP客户端框架

    2024年02月07日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包