5.28配置 HTTP 版本
创建于 2026 年 8 月 17 日约 1 分钟读完
在发起 HTTP 远程请求时,默认采用的 HTTP 协议版本为 1.1。不过,在访问部分第三方服务器时,这些服务器可能会对 HTTP 版本进行校验(例如,要求使用 2.0 版本)。
HTTP 声明式请求通过 HttpVersionAttribute 特性来设置请求的 HTTP 版本。相应的 HTTP 声明式提取器实现为 HttpVersionDeclarativeExtractor 类型,该类型负责解析 HttpVersionAttribute 特性并构建 HttpRequestBuilder 实例所需的 HTTP 版本配置。
// 在接口定义上应用,影响所有方法[HttpVersion("1.2")]public interface IHttpService : IHttpDeclarative{ [Get("https://furion.net/logo.png")] Task<string> GetStringAsync(); // 在方法上应用 [HttpVersion("2.0")] [Get("https://furion.net/logo2.png")] Task<string> GetStringAsync();}启用后,发送 HTTP 远程请求时会自动设置 HTTP 版本。
除可通过 [HttpVersion] 特性进行配置外,系统还支持全局设置方式,具体示例如下:
// 配置默认客户端services.AddHttpClient(string.Empty, client =>{ client.DefaultRequestVersion = HttpVersion.Version10;});// 配置特定客户端services.AddHttpClient("weixin", client =>{ client.DefaultRequestVersion = HttpVersion.Version10;});HttpVersionAttribute 包含以下构造函数和属性:
-
构造函数:
new(version):作用于方法或接口,设置HTTP版本。
-
属性:
Version:HTTP版本(string类型)。