如何通过HttpClient设置"Connection: keep-alive" header为小写?
How to set "Connection: keep-alive" header in lower case through HttpClient?
我有一个任务需要能够发送 Connection: keep-alive header 与 Firefox 浏览器完成的方式相同(注意 keep-alive 必须都是 lower-case):
"Connection: keep-alive"
但是,我没有运气使用 HttpClient 实现它。无论我尝试什么,请求总是
"Connection: Keep-Alive"
这是一个示例代码:
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);
另一次尝试:
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");
在 HttpWebRequest 中有一个关于如何完成的答案:
在 HttpClient 中是否可以实现类似的功能?
对于 HTTP 服务器来说,"keep-alive" 是否为大写无关紧要。
只需添加文本 "keep-alive" 或 "Keep-Alive" 或 "KEEP_ALIVE" 然后应该相同对待。
希望这对您有所帮助。
你试过这个吗:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
它给出了这个:
当您在 Windows 平台上 运行 编码时,仅 会出现此问题。它存在于 .Net 和 .Net Core 2.0 中。其根本原因在于 win32 库 "winhttp.dll",它包含 "Keep-Alive" 的硬编码字符串,因此如果您需要让它在 windows 上运行,您需要对这个 dll 做一些事情。
好消息是 这个问题不会影响 Linux 平台 运行ning Mono 或 .NET Core 2.0
我有一个任务需要能够发送 Connection: keep-alive header 与 Firefox 浏览器完成的方式相同(注意 keep-alive 必须都是 lower-case):
"Connection: keep-alive"
但是,我没有运气使用 HttpClient 实现它。无论我尝试什么,请求总是
"Connection: Keep-Alive"
这是一个示例代码:
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);
另一次尝试:
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");
在 HttpWebRequest 中有一个关于如何完成的答案:
在 HttpClient 中是否可以实现类似的功能?
对于 HTTP 服务器来说,"keep-alive" 是否为大写无关紧要。 只需添加文本 "keep-alive" 或 "Keep-Alive" 或 "KEEP_ALIVE" 然后应该相同对待。
希望这对您有所帮助。
你试过这个吗:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
它给出了这个:
当您在 Windows 平台上 运行 编码时,仅 会出现此问题。它存在于 .Net 和 .Net Core 2.0 中。其根本原因在于 win32 库 "winhttp.dll",它包含 "Keep-Alive" 的硬编码字符串,因此如果您需要让它在 windows 上运行,您需要对这个 dll 做一些事情。
好消息是 这个问题不会影响 Linux 平台 运行ning Mono 或 .NET Core 2.0