在我的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字段?
答案 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对象匹配。
希望有所帮助。