【问题标题】:How does .Net HttpClient manage to have multiple Media Types.Net HttpClient 如何管理多种媒体类型
【发布时间】: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 是如何支持多种媒体类型的呢?

【问题讨论】:

    标签: c# .net httpwebrequest dotnet-httpclient


    【解决方案1】:

    您链接到的question 正在谈论响应中的Content-Type 标头。

    您正在查看 requests 中的 Accept 标头。

    服务器决定响应的特定内容类型(可能匹配也可能不匹配Accept 标头中的任何内容)。这是一个称为Content Negotiation的进程。

    这在服务器端的具体工作方式取决于所使用的服务器技术。这里介绍一下它在ASP.Net MVC Web API的工作原理

    【讨论】:

    • 啊...感谢您的澄清!他们在我看来非常相似,因为你可以这样做request.ContentType = "application/json";
    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多