使用带有备用内容类型的 c# web api

Posted

技术标签:

【中文标题】使用带有备用内容类型的 c# web api【英文标题】:Using c# web api with alternate content-type 【发布时间】:2012-09-20 12:36:45 【问题描述】:

我是 web api 的新手,我需要为客户端创建一个服务器。我无法控制客户端 - 无法改变任何事情。

客户端在 POST 正文中发送一个 html 封装的 json 请求。但是,内容类型可能会有所不同。我需要做什么才能让我的 ApiController 处理不同的内容类型?

【问题讨论】:

【参考方案1】:

在底层,Web Api 支持 Content Negotiation 机制,可以根据 HTTP 请求中的标头 Content-Type 自动选择正确的格式化程序。

默认情况下,内容协商支持三种格式化程序:jsonxmlform-urlencoded data。如果未找到格式化程序,客户端将收到 HTTP 错误 406(不可接受)。

查看更多:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/content-negotiation

如果你需要让 Web Api 支持另一个Content-Type,你可以编写自己的自定义格式化程序:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/media-formatters

【讨论】:

谢谢。我最终使用了这个: public HttpResponseMessage Post(HttpRequestMessage r) 这让我可以访问原始 xml,然后我可以解析。我确定这不是“正确”的方式 - 但它对我有用

以上是关于使用带有备用内容类型的 c# web api的主要内容,如果未能解决你的问题,请参考以下文章

在C#中使用科大讯飞Web API进行语音合成

C# 使用 Web API 使用 Java Web 服务(没有可用的 WSDL)

使用 C# 发送加密和签名的电子邮件

Web Api、ajax 和内容类型

带有文本/纯文本响应的 API 因“不可接受的内容类型”而失败

如何使用 MongoDB 将动态 JSON 属性发布到 C# ASP.Net Core Web API?