You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 01:57:12