2016-11-14 17 views
0

我有一個WebAPI C#應用程序。定義我的GET方法:從C#中的HTTP GET中讀取內容正文WebAPI

[HttpGet] 
public HttpResponseMessage Get(string id) 

此API從數據庫裏面取出一些內容的基礎上,給出id。另一個參數是必需的,但它是如此長,以使其在URL上不起作用,所以我使用GET主體發送這樣的第二個參數。

如何從get方法中檢索它?

我試圖

var dataOnBody = await Request.Content.ReadAsStringAsync(); 

,但它不工作爲Get方法不async,我認爲這並不需要是(我想一個正常的阻塞函數讀取的內容身體和輸出一個字符串)

我只需要一個簡單的方法來請求主體

+0

chane控制器方法'公共HttpResponseMessage獲取(字符串id,[FromBody] bodyValue)' – Fabio

+0

這可能會有所幫助:[http://stackoverflow.com/a/983458/1565525](http://stackoverflow.com/a/983458/1565525) – Fabio

+0

最好在你的情況下使用Post方法沒有得到, –

回答

1

提取我的字符串即使以某種方式設法做到這一點,你會發現,支持不具有普遍性。所述HTTP specs說:

GET方法意味着檢索的任何信息(以一個 實體的形式)由請求URI來標識。

因此,返回的數據僅依賴於URI,而不依賴於正文中的任何內容。許多圖書館甚至不會讓你在GET期間發送請求。

+0

好的,當一個非常長的參數必須作爲HTTP GET請求的一部分發送時,最好的辦法是什麼? –

+0

如果它不能進入​​URI,那麼POST或PUT確實是你最好的選擇。或者可能是Web套接字。但這一切都取決於你實際想要完成的事情。 –