【问题标题】:.NET HttpRequestMessage : possible to add header with blank value?.NET HttpRequestMessage:可以添加带有空白值的标头吗?
【发布时间】:2014-02-19 05:12:39
【问题描述】:

是否可以添加 value = blank/missing 的标题?

HttpRequestMessage.Headers.Add("header-name", string.Empty);

System.FormatException was unhandled by user code
  HResult=-2146233033
  Message=The format of value '' is invalid.
  Source=System.Net.Http
  StackTrace:
       at System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
       at System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
       at System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
       at 

【问题讨论】:

    标签: .net header http-headers request-headers


    【解决方案1】:

    不会的。它违反了HTTP protocol standard

    4.2 消息头

    HTTP 标头字段,其中包括 general-header(第 4.5 节), request-header(第 5.3 节)、response-header(第 6.2 节)和 entity-header(第 7.1 节)字段,遵循相同的通用格式 在 RFC 822 [9] 的第 3.1 节中给出。每个头域包括 名称后跟冒号 (":") 和字段值。

    【解决方案2】:

    如果你想发送一个没有价值的疯狂头,使用TryAddWithoutValidation()方法,这里是一个例子:

    HttpRequestMessage request = new HttpRequestMessage();
    request.RequestUri = new Uri("http://kiewic.com");
    var result = request.Headers.TryAddWithoutValidation("Authorization", string.Empty);
    
    HttpClient client = new HttpClient();
    var response = await client.SendAsync(request);
    

    并交叉手指,以便服务器喜欢请求。

    【讨论】:

      【解决方案3】:

      您可以通过以下方式之一获取 HttpHeaders 的空实例:

      var headers = new HttpClient().DefaultRequestHeaders;
      var headers = new HttpResponseMessage().Headers;
      var headers = new HttpRequestMessage().Headers;
      You could also make your own class that extends HttpHeaders and use that.
      

      【讨论】:

        猜你喜欢
        • 2019-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多