我目前正在创建可写入表的Web API。我使用[FromBody]标签传递表格的值。
问题在于[FromBody]值始终为null。我正在使用Advanced Rest Client测试我的API。
public HttpResponseMessage Post(int id, [FromBody]string value)
{
//DO Something
}
答案 0 :(得分:2)
问题出在类型转换中。您正在发送一个包含一个字典的值的数组,并试图在该方法中接收一个字符串。 ASP.NET无法将您的结构转换为string
并使用null作为默认值。
因此,测试方法的简单方法是在正文中传递一个简单的字符串。但是正确的方法是更改传递给操作方法的对象的类型:
public HttpResponseMessage Post(int id, [FromBody]List<Dictionary<string,string>> value)
{
//DO Something
}
在系统执行操作时手动解析JSON很奇怪,但是您应该将string
传递给该方法。只需将您的身体包裹在""
上,即可在该方法中获得纯JSON。您也可以通过StreamReader
手动阅读正文:
public HttpResponseMessage Post(int id)
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var plainBody = reader.ReadToEnd();
}
}
答案 1 :(得分:0)
如果您不想对主体进行反序列化,则只需从Request.Body
属性中读取字符串即可。
public Task<HttpResponseMessage> Post(int id)
{
var reader = new StreamReader(Request.Body);
var bodyString = await reader.ReadToEndAsync();
...
}