.Net HttpClient 如何管理多种媒体类型

How does .Net HttpClient manage to have multiple Media Types

我正在实施 HttpWebRequest and noticed that the Accept 属性 类型 string

 webRequest.Accept = "application/json";

HttpClient has it's Accept 的实现作为 HttpHeaderValueCollection<MediaTypeWithQualityHeaderValue>

的类型
clientRequest.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
clientRequest.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

这意味着您可以 Add 任意多的媒体类型。

但根据 this question,标准只允许您接受 1 内容或媒体类型。

那么,HttpClient 是如何支持多种媒体类型的呢?

您链接的 question 正在谈论 回复 中的 Content-Type header。

您正在查看 请求 中的 Accept header。

服务器决定响应哪个具体内容类型(可能匹配也可能不匹配Accept header)。这是一个称为 Content Negotiation.

的过程

这在服务器端如何工作的细节取决于所使用的服务器技术。下面介绍一下它在ASP.Net MVC Web API

中是如何工作的