作者:卢太爽 | 来源:互联网 | 2023-01-09 18:14
这两个电话有什么区别?我的最终目标是通过网络
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
[...]
那么,除了这种奇怪的命名之外,没有什么可以在这里获得的吗?
1> Barr J..:
没有区别.
DefaultRequestHeaders.Accept是字符串类型的集合,您可以在其中添加要使用新实例接受的标头MediaTypeWithQualityHeaderValue
.
client.DefaultRequestHeaders是一个字典,它接受请求标头的key和value,并根据它们匹配结果.
DefaultRequestHeaders
有重载.
它们之间唯一不同的是,DefaultRequestHeaders.Accept
需要你初始化一个新的MediaTypeWithQualityHeaderValue
类实例,导致堆中的另一个引用类型,同时client.DefaultRequestHeaders
将数据添加到字典中,从而消除了资源成本和需要初始化一个新实例.
用户应该如何使用以及使用什么,这完全取决于用户.
它们是有区别的.一种方法接受一切,即使它是畸形的.另一种特别接受具有品质因数的媒体类型