热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何更改HttpRequestMessage的标头值

如何解决《如何更改HttpRequestMessage的标头值》经验,为你挑选了1个好方法。

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

在一个HttpClientHandler我有以下代码:

protected override async Task 
               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({"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!");
}

有更直观的方法来实现这一目标吗?



1> Andrii Litvi..:

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

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!");


推荐阅读
author-avatar
手机用户2502884755
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有