如何在Web api方法中读取传入的Http Post请求的主体?

时间:2017-12-12 18:42:31

标签: c# asp.net-web-api http-post

我正在尝试在API方法中读取传入的http post请求的内容。

[HttpPost]
[Route("api/Process")]
public async Task Process())
{
    //string result = await Request.Content.ReadAsStringAsync();
    NameValueCollection result = await Request.Content.ReadAsFormDataAsync();
}

当我查看提琴手时,请求正文如下所示。它在那里显示为名称值对。

Request body:

name: test
total: 200
email: test@test.com
identifier: 493493

我如何在API中阅读它们?

ReadAsStringAsync给出了

name=test&total=200&email=test@test.com&identifier=493493

ReadAsFormDataAsync仅提供密钥集合,即名称,总计,电子邮件,标识符。但是没有价值收集。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

为什么不添加模型类来收集发布的数据。您无需手动接收已发布的数据作为响应。 MVC应该执行它。

public class ProcessInput
{
    public string Name { get; set; }

    public string Total { get; set; }

    public string Email { get; set; }

    public string Identifier { get; set; }
}

API方法;

    [HttpPost]
    [Route("api/Process")]
    public async Task Process(ProcessInput input)
    {
        //var name = input.Name;
    }

答案 1 :(得分:-2)

使用FormCollection:

[HttpPost]
[Route("api/Process")]
public async Task Process(FormCollection form)
{
    if (form.AllKeys.Contains("name")) lcName = form["name"].ToString() ?? "";
    ... etc ...
}