.Net HttpClient 如何管理多种媒体类型
Posted
技术标签:
【中文标题】.Net HttpClient 如何管理多种媒体类型【英文标题】:How does .Net HttpClient manage to have multiple Media Types 【发布时间】:2015-01-13 09:25:02 【问题描述】:我正在实现HttpWebRequest,并注意到Accept 属性的类型为string
webRequest.Accept = "application/json";
HttpClient 的实现将 Accept 作为 HttpHeaderValueCollection<MediaTypeWithQualityHeaderValue>
的类型
clientRequest.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
clientRequest.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
这意味着您可以Add
任意数量的媒体类型。
但是根据this question,标准只允许你接受1 Content or Media Type。
那么,HttpClient 是如何支持多种媒体类型的呢?
【问题讨论】:
【参考方案1】:您链接到的question 正在谈论响应中的Content-Type
标头。
您正在查看 requests 中的 Accept
标头。
服务器决定响应的特定内容类型(可能匹配也可能不匹配Accept
标头中的任何内容)。这是一个称为Content Negotiation的进程。
这在服务器端的具体工作方式取决于所使用的服务器技术。这里介绍一下它在ASP.Net MVC Web API的工作原理
【讨论】:
啊...感谢您的澄清!他们在我看来非常相似,因为你可以这样做request.ContentType = "application/json";
以上是关于.Net HttpClient 如何管理多种媒体类型的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试
ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试
如何在ASP.NET Core 中使用IHttpClientFactory