【问题标题】:How to prevent HttpClient from sending the Connection header如何防止 HttpClient 发送 Connection 标头
【发布时间】:2018-05-04 19:46:20
【问题描述】:

HttpClient 默认将其包含为“Keep-Alive”。我已经能够使用httpClient.DefaultRequestHeaders.ConnectionClose = true; 将其设置为“关闭”,但我如何完全省略它?

【问题讨论】:

  • 请问您为什么要这样做?标头确定客户端和服务器如何相互通信。
  • httpClient.KeepAlive = false 不成功?
  • @poke 在尝试解决连接到 poloniex 交易 api 的问题时,我将我发送的内容与工作 PHP 应用程序发送的内容进行了比较,包含此标头是我能看到的唯一区别.我知道它是“注定”存在的,但我需要消除它作为我问题的潜在原因。
  • @Rabban 'System.Net.Http.HttpClient' does not contain a definition for 'KeepAlive'
  • 这是一个很好的问题,故障排除是一个非常正当的理由,所以我不知道为什么要投反对票。 +1

标签: c# http-headers dotnet-httpclient


【解决方案1】:

我以前见过这个问题,据我所知,没有人 (not even the great Jon Skeet) 想出一种方法来避免在 HttpClientHttpWebRequest 世界中发送 Connection 标头而不完全重新发明轮子.它发生在杂草深处的某个地方。

ConnectionClose 可以为空,但在 HttpClient.DefaultRequestHeadersHttpRequestMethod.Headers 上将其设置为 null 仍会导致发送 Connection: Keep-Alive 标头。

总结一下:

  • HttpRequestHeaders.ConnectionClose = true => Connection: close
  • HttpRequestHeaders.ConnectionClose = false => Connection: Keep-Alive
  • HttpRequestHeaders.ConnectionClose = null => Connection: Keep-Alive

  • HttpWebRequest.KeepAlive = true => Connection: Keep-Alive

  • HttpWebRequest.KeepAlive = false => Connection: close

HttpWebRequest.KeepAlive 不可为空)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2018-11-04
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多