如何向httprequestmessage添加头部信息

37

我想给一个HttpRequestMessage添加头部信息。问题是HttpRequestHeaders没有构造函数,HttpHeaders是抽象的...... 有没有办法在我们的代码中使用这些类(我可以使用List<Tuple<string, List<string>>,但是看起来不太好)

2个回答

64

HttpRequestMessage已经拥有一个HttpRequestHeaders实例,并且您无法更改它。您可以像这样添加标头:

message.Headers.Add("X-Hello", "world");

是的,这就是我在函数内部所做的事情,但我的函数签名看起来很糟糕。我有类似于public static string Get(Uri url, Dictionary<string, List<string>> headers)的东西。 - Dave
为什么不使用一个Dictionary<string,string> headers呢? - Justin Harvey
是的,我可能可以做到(我曾经遇到过一个网站,在头部放置了两个相同的键)。此外,在 .Net 中 HttpHeaders 的定义是 public abstract class HttpHeaders : IEnumerable<KeyValuePair<string, IEnumerable<string>>>, IEnumerable - Dave
4
你可能需要一个NameValueCollectionList<KeyValuePair<string, string>>来代替字典,因为标头可以出现多次且顺序可能很重要。我同意使用HttpHeaders会更好。 - Sjoerd

7
你可以通过以下方式之一获取HttpHeaders的空实例:
var headers = new HttpClient().DefaultRequestHeaders;
var headers = new HttpResponseMessage().Headers;
var headers = new HttpRequestMessage().Headers;

你也可以创建一个扩展HttpHeaders的类并使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接