9

私はRestSharpを私が持っている安らかなサービスで動作させようとしています。POST渡されるオブジェクトにリスト(この特定の場合はのリスト)が含まれている場合を除いて、すべてが正常に機能しているようstringです。

私の目的:

public class TestObj
{
    public string Name{get;set;}
    public List<string> Children{get;set;}
}

これがサーバーにChildren送信されると、プロパティは内容を含む文字列として送信されますSystem.Collections.Generic.List`1[System.String]

これが私がオブジェクトを送る方法です:

var client = new RestClient();
var request = new RestRequest("http://localhost", Method.PUT);

var test = new TestObj {Name = "Fred", Children = new List<string> {"Arthur", "Betty"}};
request.AddObject(test);
client.Execute<TestObj>(request);

私は何か間違ったことをしていますか、それともこれはRestSharpのバグですか?(違いが生じる場合は、XMLではなくJSONを使用しています。)

4

3 に答える 3

9

ヒットしているサーバーによって異なりますが、ASP.NET Web API コントローラー (およびおそらく他のサーバー側テクノロジ) をヒットしている場合は、コレクション内の各項目をループで追加すると機能します。

foreach (var child in test.Children) 
    request.AddParameter("children", x));
于 2015-04-07T21:14:03.677 に答える
3

AddJsonBodyを使用する

var client = new RestClient();
var request = new RestRequest("http://localhost", Method.PUT);
request.AddJsonBody(new TestObj {
     Name = "Fred", 
     Children = new List<string> {"Arthur", "Betty"}
});
client.Execute(request);

アピ側

[AcceptVerbs("PUT")]
string Portefeuille(TestObj obj)
{
    return String.Format("Sup' {0}, you have {1} nice children", 
        obj.Name, obj.Children.Count());
}
于 2017-01-16T08:37:43.633 に答える
2

Guidのリストでも同様の問題がありました。私の投稿は機能しますが、リストには正しいデータが含まれません。私はそれを少しハックし、json.netを使用してオブジェクトをシリアル化しました

別のスタックオーバーフローの投稿で私が抱えていた問題

私はこれが完璧ではないことを知っていますが、うまくいきます

于 2012-09-08T00:26:08.623 に答える