C# 如何在WEB API中获取WWWForm

C# 如何在WEB API中获取WWWForm,c#,rest,asp.net-web-api,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()) {

在我的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字符串始终为空。如何在WebApi中获取WWWForm字段

这是fiddler的网络表单:
我想你做这样的事情可能会更走运:

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中的raw选项卡以查看正在发送的JSON。它应该与UserInfo对象匹配


希望能有所帮助。

谢谢你的回答。你是对的,但我必须编写json数据,不能使用WWWForm。我从这条线索中得到了提示: