我需要向使用HTTP版本1.0的Web服务发出请求.我正在使用HttpClient,但我无法看到任何设置HTTP版本的选项.
我在哪里可以设置请求版本?
我正在使用.NET试验Heroku API System.Net.Http.HttpClient.特别是,我想keep-alive工作,以便我可以使用一个TCP连接发送许多HTTP请求,并且只进行一次SSL握手,而不是每次请求使用SSL握手设置TCP连接.
我正在测试https://api.heroku.com/status,它提供了一个很好的HTTP 200,并使用Wireshark来监控TCP流量.
Google Chrome,ApacheBench(带-k标志)和curl似乎都能够保持TCP连接打开并发送多个请求.HttpClient,不是那么多.我还针对其他主机测试了HttpClient(例如https://google.com/,我只看到一个SSL握手/ TCP设置.所以看起来这是HttpClient和Heroku API之间的糟糕交互.
这是我正在测试的代码:
private static async void TestUrl(string url)
{
using (var client = GetClient())
{
await client.GetAsync(url);
await client.GetAsync(url);
await client.GetAsync(url);
await client.GetAsync(url);
}
}
private static HttpClient GetClient()
{
var requestHandler = new HttpClientHandler
{
UseCookies = false,
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
};
return new HttpClient(requestHandler);
}
Run Code Online (Sandbox Code Playgroud)
我还附上了一个Wireshark屏幕截图,显示HttpClient RST在接收数据后立即决定重置()连接.

对于这里发生了什么的任何建议?