foo*_*bar 5 c# httpclient keep-alive
我有一个任务,需要能够以与 Firefox 浏览器相同的方式发送 Connection: keep-alive 标头(请注意,keep-alive 必须全部小写):
"Connection: keep-alive"
Run Code Online (Sandbox Code Playgroud)
但是,我没有运气使用 HttpClient 实现它。无论我尝试什么,请求总是有
"Connection: Keep-Alive"
Run Code Online (Sandbox Code Playgroud)
这是一个示例代码:
var client = new HttpClient();
var request = new HttpRequestMessage()
{
RequestUri = new Uri("http://www.someURI.com"),
Method = HttpMethod.Get,
};
request.Headers.Connection.Clear(); // No need to do it as it is empty anyway
request.Headers.Connection.Add("keep-alive"); // Still results in "Keep-Alive"
var task = client.SendAsync(request);
Run Code Online (Sandbox Code Playgroud)
另一种尝试:
var client = new HttpClient();
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Connection.Add("keep-alive"); // Still results in "Keep-Alive"
string result = await client.GetStringAsync("http://www.someURI.com");
Run Code Online (Sandbox Code Playgroud)
有一个关于如何在 HttpWebRequest 中完成的答案:How to send lower-case Keep-Alive header through HttpWebRequest
HttpClient 中可能有类似的事情吗?
仅当您在 Windows 平台上运行代码时才会出现此问题。它存在于.Net 和.Net Core 2.0 中。其根本原因在于 win32 库“winhttp.dll”,其中包含“Keep-Alive”的硬编码字符串,因此如果您需要让它在 Windows 上运行,则需要对此 dll 进行一些处理。
好消息是这个问题不会影响运行 Mono 或 .NET Core 2.0 的Linux 平台
| 归档时间: |
|
| 查看次数: |
9032 次 |
| 最近记录: |