Asp.net-Mvc
將字元串發佈到 ASP.NET 4.5 和 VS 2012 RC 中的 Web API 控制器
我是 WebAPI 的新手並試圖學習它。我有一個 WebAPI 控制器,我正在嘗試使用我的單元測試中的 WebClient 向其發布一個字元串。
我正在使用下面的程式碼向我的 WebAPI 發布一個字元串。
using (var client = new WebClient()) { client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var result = client.UploadString(_webapiUrl, "POST", "hello"); }這是我的控制器。
[HttpPost] public byte[] Post(string value) { // Do something with value }我可以在我的控制器上打一個斷點,但它似乎沒有發布任何字元串,我總是得到 NULL 值。我應該怎麼做才能獲得價值?
謝謝
如果您只需要接收一個值,
=請在值之前使用:var result = client.UploadString(_webapiUrl, "POST", "=hello"); // NOTE '='
請注意為將值發送回伺服器而形成的鍵值對。Key 應該與您在操作方法參數中所期望的相同。在這種情況下,您的密鑰是“VALUE”
[HttpPost] public byte[] Post(string value)使用以下程式碼發布值。
string URI = "http://www.someurl.com/controller/action"; string myParamters = "value=durbhakula"; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(URI, myParameters); }更新
我感謝 Aliostad 指出我的錯誤。在 Web API 中發布表單數據時,參數名稱應為空。
string myParamters = "=durbhakula";你也需要把
$$ FormBody $$您的操作方法中的屬性。FromBody屬性告訴 Web API 從請求正文中讀取值
[HttpPost] [ActionName("Simple")] public HttpResponseMessage PostSimple([FromBody] string value) { .. .. }請看這個連結