我是新来的WebAPI,并试图了解它。 我必须对此我尝试后使用Web客户端从我的单元测试的字符串的的WebAPI控制器。
我下面用下面的代码发布一个字符串我的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 '='
请注意,被张贴的值返回到服务器形成的键值对。 如您在action方法参数预期的关键应该是相同的。 在这种情况下,你的重点是“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);
}
UPDATE
我感谢Aliostad指点我的错误。 而在发布API的Web表单数据的参数名称应该是空的。
string myParamters = "=durbhakula";
你也需要把[FormBody]属性在您的操作方法。 该FromBody属性指示Web API来读取请求主体的价值
[HttpPost]
[ActionName("Simple")]
public HttpResponseMessage PostSimple([FromBody] string value)
{
..
..
}
请参阅此链接