在我的WebApi中,我有一个HttpGet
和HttpPost
方法,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"字符串"
答案 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操作接受请求。