WebApi HttpPost正文内容为null

时间:2017-11-06 09:34:30

标签: c# asp.net-web-api swagger postman

在我的WebApi中,我有一个HttpGetHttpPost方法,get方法工作正常,调用post方法但是body内容始终为null,除非在{{1}中使用}。我尝试以字符串格式(首选数据类型)以及模型提供正文内容,但这两种方法都没有奏效。我也试过切换内容类型但没有成功。有谁知道我做错了什么,或者我如何轻松地从HttpRequestMessage获取可变数据,在下面的示例中是" test"。

方法1:

HttpRequestMessage

方法2(带模型):

[System.Web.Http.HttpPost]
[Route("api/v1/AddItem")]      
public IHttpActionResult AddItem([FromBody]string filecontent, string companycode)
{
   MessageBox.Show(filecontent);

   Return Ok("");
}

型号:

[System.Web.Http.HttpPost]
[Route("api/v1/AddItem")]      
public IHttpActionResult AddItem([FromBody]ItemXML filecontent, string companycode)
{
   MessageBox.Show(filecontent.XMLContent);

   Return Ok("");
}

方法3:

public class ItemXML
{
  public ItemXML(string content)
  {
    XMLContent = content;
  }
  public string XMLContent { get; set; }      
}

方法3内容字符串(" test"是提供的值):" content" ------ WebKitFormBoundarydu7BJizb50runvq0 \ r \ nConContent-Disposition:form-data;命名= \" filecontent \" \ r \ n \ r \ n \"的测试 \" \ r \ n ------ WebKitFormBoundarydu7BJizb50runvq0 - \ r \ n"字符串"

1 个答案:

答案 0 :(得分:1)

创建要发送到服务器的模型存储数据

public class Model {
    public string filecontent { get; set;}
    public string companycode { get; set;}
}

更新行动

[HttpPost]
[Route("api/v1/AddItem")]      
public IHttpActionResult AddItem([FromBody]Model model) {
    if(ModelStat.IsValid) {
        return Ok(model); //...just for testing
    }
    return BadRequest();
}

在客户端上,确保正确发送请求。在这种情况下,将使用JSON。

public client = new HttpClient();

var model = new {
    filecontent = "Hello World",
    companycode = "test"
};

var response = await client.PostAsJsonAsync(url, model);

如果使用其他类型的客户端,请确保正确格式化正在发送的数据,以便Web API操作接受请求。

参考Parameter Binding in ASP.NET Web API