2012-09-28 36 views
8

我是新來的web api,我需要爲客戶端創建一個服務器。我無法控制客戶 - 不能改變一件事。使用c#web api與替代內容類型

客戶端在POST主體中發送一個html封裝的json請求。但是,內容類型可能會有所不同。我需要做些什麼來讓我的ApiController處理不同的內容類型?

回答

8

在底層,Web Api支持內容協商機制根據HTTP請求中的標頭Content-Type自動選擇正確的格式化程序。

默認情況下,內容協商支持三種格式化程序:json,xmlform-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

+1

感謝。最後我用這樣的: 公共HttpResponseMessage郵報(HttpRequestMessage R) { } 這讓我可以訪問原始XML要到,然後我可以解析。我相信這不是「正確」的方式 - 但它適用於我 – user789235