【问题标题】:How to change a header value of HttpRequestMessage如何更改 HttpRequestMessage 的标头值
【发布时间】:2017-04-28 10:56:12
【问题描述】:

在验证设置中,我想更改 HttpRequestMessage 的标头值。

HttpClientHandler 我有以下代码:

protected override async Task<HttpResponseMessage> 
               SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    //some condition when to alter the header

    //does not work: value is read only
    request.Headers.Single(c => c.Key == "FooHeader").Value = 
               new List<string>({"aha!"}); 

    //does not work: cannot apply indexer
    request.Headers["FooHeader"] = "aha!";

    //does work but seems a bit overkill, besides I need to check if it exists
    request.Headers.Remove("FooHeader");
    request.Headers.Add("FooHeader", "aha!");
}

有没有更直观的方法来实现这一点?

【问题讨论】:

    标签: c# .net httprequest


    【解决方案1】:

    没有更好的内置方法来替换标题。您可以创建一个扩展方法以更流畅的方式执行此操作:

    public static class HttpRequestHeadersExtensions
    {
        public static void Set(this HttpRequestHeaders headers, string name, string value)
        {
            if (headers.Contains(name)) headers.Remove(name);
            headers.Add(name, value);
        }
    }
    

    然后你可以像这样使用它:

    request.Headers.Set("FooHeader", "aha!");
    request.Headers.Set("FooHeader", "ahaha!");
    

    【讨论】:

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