使用带有备用内容类型的 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
自动选择正确的格式化程序。
默认情况下,内容协商支持三种格式化程序:json
、xml
和 form-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 使用 Java Web 服务(没有可用的 WSDL)