RestSharp可以在POST请求中发送List <string>吗?</string>

时间:2012-09-05 15:32:46

标签: json serialization restsharp

我想让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中的错误? (如果它有所不同,我使用的是JSON,而不是XML。)

3 个答案:

答案 0 :(得分:8)

这取决于您正在使用的服务器,但是如果您正在使用ASP.NET Web API控制器(可能还有其他服务器端技术),那么如果您在集合中添加每个项目,它将起作用循环:

foreach (var child in test.Children) 
    request.AddParameter("children", x));

答案 1 :(得分:2)

我在Guids列表中遇到了类似的问题。我的帖子可以工作,但列表永远不会有正确的数据。我攻击它升技并使用json.net序列化对象

Issue I had on another stackoverflow post

我知道这不是完美的,而是诀窍

答案 2 :(得分:2)

使用 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);

Api Side

[AcceptVerbs("PUT")]
string Portefeuille(TestObj obj)
{
    return String.Format("Sup' {0}, you have {1} nice children", 
        obj.Name, obj.Children.Count());
}