2

如何将 json 值发布到 ASP.NET MVC 4 Web Api 控制器?我尝试了几种方法,但我无法使其工作。

首先,我简化的控制器操作:

[HttpPost]
public Interaction Post(Interaction filter)
{
     return filter;
}

还有我使用 Unity3D WWW 的 post 方法:

public string GetJson(string url, WWWForm form)
{
    var www = new WWW(url, form);

    while (!www.isDone) { };

    return www.text;
}

我的 WWWForm 在哪里:

var form = new WWWForm();
form.AddField("filter", interaction);

我尝试指定标题,例如:

public string GetJson(string url, byte[] data)
{
    var header = new Hashtable();
    header.Add("Content-Type", "text/json");

    var www = new WWW(url, data, header);

    while (!www.isDone) { };

    return www.text;
}

我真的试图通过十多种不同的方式来解决这个问题,但我总是得到相同的结果:

Debug.Log(input); // {"Id":15,"Name":"Teste","Description":"Teste","Value":0.0,"Time":10.0}
Debug.Log(output); // {"Id":0,"Name":null,"Description":null,"Value":0.0,"Time":0.0}

任何方向都会有所帮助。谢谢!

4

1 回答 1

6

不要使用 WWWForm 来发布 JSON。使用这样的东西。

string input = "You JSON goes here";

Hashtable headers = new Hashtable();
headers.Add("Content-Type", "application/json");

byte[] body = Encoding.UTF8.GetBytes(input);

WWW www = new WWW("http://yourserver/path", body, headers);

yield www;

if(www.error) {
         Debug.Log(www.error);
}
else {
        Debug.Log(www.text);
}

假设输入中的 JSON 字符串是这样的,

{"Id":15,"Name":"Teste","Description":"Teste","Value":0.0,"Time":10.0}

你将需要这样的课程

public class Interaction
{
   public int Id { get; set; }
   public string Name { get; set; }
   public string Description { get; set; }
   public string Teste { get; set; }
   // other properties
}

像这样的动作方法起作用

public Interaction Post(Interaction filter)
于 2013-06-04T08:24:57.340 回答