这两个电话有什么区别?我的最终目标是拥有
通过网络发送的Accept: application/json
,而不是附加到其他MIME类型的某些默认集合。
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
与
client.DefaultRequestHeaders
.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));
我的CLR是.NET Core 2.0。
嗅电线没有区别:
# just .Add("Accept"...
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]
# with MediaTypeWithQualityHeaderValue
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]
因此,在这种类型的怪异命名之外,没有别的可得的东西对吗?
最佳答案
没有区别。
DefaultRequestHeaders.Accept 是字符串类型的集合,您可以在其中添加 header 以使用新的MediaTypeWithQualityHeaderValue
实例接受。
client.DefaultRequestHeaders 是一个字典,它接受请求 header 的键和值,并根据它们匹配结果。
DefaultRequestHeaders
有超载。
它们之间的唯一区别是,
DefaultRequestHeaders.Accept
将要求您初始化MediaTypeWithQualityHeaderValue
类的新实例,从而在堆中产生另一种引用类型,而client.DefaultRequestHeaders
将数据添加到字典中,从而节省了资源成本和需要初始化一个新实例。真正取决于用户的使用方式和使用方式。