2

json 値を使用して ASP.NET MVC 4 Web Api コントローラーに投稿するにはどうすればよいですか? いろいろやってみましたが、うまくいきません。

まず、単純化した Controller アクション:

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

そして、Unity3D WWW を使用した投稿方法:

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

    while (!www.isDone) { };

    return www.text;
}

私のWWWフォームはどこにありますか:

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;
}

私は実際にこれを10以上の異なる方法で解決しようとしましたが、常に同じ結果が得られます:

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 に答える