发布一个字符串的Web API控制器在ASP.NET 4.5和VS 2012 RC(POST a s

2019-06-26 13:04发布

我是新来的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值。 我应该怎么做才能获得的价值?

谢谢

Answer 1:

如果你需要得到一个值,使用=前值:

var result = client.UploadString(_webapiUrl, "POST", "=hello"); // NOTE '='


Answer 2:

请注意,被张贴的值返回到服务器形成的键值对。 如您在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)
{
..
..
}

请参阅此链接



文章来源: POST a string to Web API controller in ASP.NET 4.5 and VS 2012 RC