如何在WEB API中获取WWWForm

时间:2017-02-10 21:17:05

标签: c# rest asp.net-web-api

在我的WebApi中,我有这个POST方法:

    [HttpPost]
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    [Route("api/user/save")]
    public void Save([FromBody]string userinfo)
    {
        using (var context = new CarWarsEntities())
        {
            var a = "";
        }
    }

我用我的代码在Unity项目中调用它:

    var url = "http://localhost:61506/api/user/save";
    var form = new WWWForm();
    form.AddField("EXP", GameControl.control.EXP);
    form.AddField("Health", GameControl.control.Health);
    form.AddField("Silver", GameControl.control.Silver);
    form.AddField("Gold", GameControl.control.Gold);
    form.AddField("Ammo", GameControl.control.Ammo);
    form.AddField("Nitro", GameControl.control.Nitro);
    var www = new WWW(url, form);

调用有效,但userInfo字符串始终为null。如何在WebApi中获取WWWForm字段?

这是来自fiddler的WebForm: enter image description here

1 个答案:

答案 0 :(得分:2)

我认为你可能会有更好的运气做这样的事情:

public class UserInfo
{
    public int EXP {get; set}
    public int Health {get; set}
    public int Silver {get; set}
    public int Gold {get; set}
    public int Ammo {get; set}
    public int Nitro {get; set}
}

然后在控制器中略微更改您的代码:

[HttpPost]
[EnableCors(origins: "*", headers: "*", methods: "*")]
[Route("api/user/save")]
public void Save([FromBody]UserInfo userinfo)
{
    using (var context = new CarWarsEntities())
    {
        var a = "";
    }
}

这样,WebApi会将表单直接映射到对象。我怀疑它现在正在为你做什么,但它无法做到。

如果这对您不起作用,请查看Fiddler中的原始选项卡以查看正在发送的JSON。它应该与UserInfo对象匹配。

希望有所帮助。