我是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
}
我可以在我的控制器上找到一个断点,但它似乎没有POST任何字符串,我总是得到NULL值。我该怎么做才能获得价值?
谢谢
如果您需要接收的只是一个值,请使用 =
在价值之前:
var result = client.UploadString(_webapiUrl, "POST", "=hello"); // NOTE '='
如果您需要接收的只是一个值,请使用 =
在价值之前:
var result = client.UploadString(_webapiUrl, "POST", "=hello"); // NOTE '='
请注意为将值发布回服务器而形成的键值对。键应与操作方法参数中的预期相同。在这种情况下,您的密钥是“值”
[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);
}
UPDATE
我感谢Aliostad指出了我的错误。在Web API中发布表单数据时,参数名称应为空。
string myParamters = "=durbhakula";
您还需要在action方法中放置[FormBody]属性。该 FromBody attribute告诉Web API从请求正文中读取值
[HttpPost]
[ActionName("Simple")]
public HttpResponseMessage PostSimple([FromBody] string value)
{
..
..
}
请看这个 链接