using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; namespace FastGithub.ReverseProxy { /// /// YARP的HttpClient /// class HttpClient : HttpMessageInvoker { private readonly TlsSniPattern tlsSniPattern; /// /// YARP的HttpClient /// /// /// /// public HttpClient(HttpMessageHandler handler, TlsSniPattern tlsSniPattern, bool disposeHandler = false) : base(handler, disposeHandler) { this.tlsSniPattern = tlsSniPattern; } /// /// 发送数据 /// /// /// /// public override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var isHttps = request.RequestUri?.Scheme == Uri.UriSchemeHttps; request.SetTlsSniContext(new TlsSniContext(isHttps, this.tlsSniPattern)); return base.SendAsync(request, cancellationToken); } } }