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

4

3 回答 3

9

It depends on what server you're hitting, but if you're hitting an ASP.NET Web API controller (and probably other server-side technologies), it'll work if you add each item in the collection in a loop:

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

我在指南列表中遇到了类似的问题。我的帖子会起作用,但列表永远不会有正确的数据。我破解了它并使用 json.net 序列化对象

我在另一个 stackoverflow 帖子上遇到的问题

我知道这并不完美,但可以解决问题

于 2012-09-08T00:26:08.623 回答