如何在RestSharp 110.2.0中使用HTTP/2?配置HttpClient后仍无效
在RestSharp 110.2.0中启用HTTP/2的正确配置方式
你直接传入配置好DefaultRequestVersion的HttpClient到RestClient后不生效,核心原因是RestSharp默认会覆盖请求版本的设置。结合你的场景(服务器支持HTTP/2、纯HttpClient调用正常),可以通过以下两种方式解决:
方案一:直接通过RestClientOptions配置
不需要手动创建HttpClient,用RestClientOptions指定HTTP版本,RestSharp会自动创建适配的底层客户端:
var options = new RestClientOptions(Config.API_PATH) { DefaultRequestVersion = HttpVersion.Version20, // 可选:根据业务需求调整超时等其他参数 MaxTimeout = 30000 }; var testClient = new RestClient(options);
方案二:手动配置HttpClientHandler(适合需要自定义HttpClient的场景)
仅设置HttpClient的DefaultRequestVersion不够,底层的HttpClientHandler也需要启用HTTP/2支持,完整配置如下:
var handler = new HttpClientHandler { // 生产环境请替换为合法的证书验证逻辑,以下仅为测试用 ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator, // HTTP/2要求使用TLS 1.2及以上版本 SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13 }; // 检查并启用Handler的HTTP/2支持 if (handler.SupportsProtocolVersion(HttpVersion.Version20)) { handler.DefaultRequestVersion = HttpVersion.Version20; } var httpClient = new HttpClient(handler) { BaseAddress = new Uri(Config.API_PATH), DefaultRequestVersion = HttpVersion.Version20 }; var testClient = new RestClient(httpClient);
额外注意事项
- 运行环境需支持HTTP/2:.NET Core 3.0+、.NET 5+,或Windows 10/Server 2016及以上系统
- 调用接口后,可以通过查看请求对象的
RequestMessage.Version,或服务器端日志,确认是否成功使用HTTP/2协议
内容的提问来源于stack exchange,提问作者Artem Pokamestov
相关产品推荐
相关产品推荐

