代码之家  ›  专栏  ›  技术社区  ›  sazr

将IDictionary<string,string>附加到WebHeaderCollection

  •  2
  • sazr  · 技术社区  · 11 年前

    如何附加 IDictionary<string,string> System.Net.WebHeaderCollection ?

    甚至追加2 System.Net.WebHeaderCollection 物体?我正在尝试将许多自定义标头添加到 HttpWebRequest 并覆盖名为的源字典中的键值对 request.Headers .

    我的当前代码遇到铸造问题:

    错误1实例参数:无法从“System.Net”转换。WebHeaderCollection”转换为“System.Collections.Generic.IEnumerable>”

    // IDictionary <string, string> customHeaders; // populated earlier in the code
    var request = (HttpWebRequest)WebRequest.Create(requestUrl);
    
    // Compiler error below
    request.Headers.Concat(customHeaders).GroupBy(d => d.Key)
                        .ToDictionary(d => d.Key, d => d.First().Value);
    
    1 回复  |  直到 11 年前
        1
  •  3
  •   Rob    11 年前

    试试看:

    var request = (HttpWebRequest)WebRequest.Create(requestUrl);
    foreach(var customHeader in customHeaders)
        request.Headers.Add(customHeader.Key, customHeader.Value);
    

    Concat 不是就地操作,它只返回连接的集合。所以即使它 编译,它实际上不起作用。

    在任何情况下,要使用通用IEnumerable遍历头,您需要执行以下操作:

    request.Headers.Cast<HttpRequestHeader>()

    这应该说明为什么你不能 词典 具有 IEnumerable<。HttpRequestHeader>