Asp.net-Mvc

將字元串發佈到 ASP.NET 4.5 和 VS 2012 RC 中的 Web API 控制器

  • July 27, 2012

我是 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)
{
..
..
}

請看這個連結

引用自:https://stackoverflow.com/questions/11662064