2015-07-20 46 views
0

我已經看過如何從響應中反序列化字典,但是如何發送字典呢?RestSharp send Dictionary

var d = new Dictionary<string, object> { 
    { "foo", "bar" }, 
    { "bar", 12345 }, 
    { "jello", new { qux = "fuum", lorem = "ipsum" } } 
}; 

var r = new RestRequest(url, method); 
r.AddBody(d); // <-- how? 

var response = new RestClient(baseurl).Execute(r); 

回答

1

呃...這是別的東西搞砸了我的情況。由於@Chase said,這很簡單:

var c = new RestClient(baseurl); 
var r = new RestRequest(url, Method.POST); // <-- must specify a Method that has a body 

// shorthand 
r.AddJsonBody(dictionary); 

// longhand 
r.RequestFormat = DataFormat.Json; 
r.AddBody(d); 

var response = c.Execute(r); // <-- confirmed* 

不需要包裝字典作爲另一個對象。

(*)證實,它發送預期JSON的帶有回聲服務諸如Fiddler,或RestSharp的SimpleServer

1

嘗試做這樣的事情,這是我簡單的職位有一些東西,你的例子,我更喜歡使用RestSharp這種風格,因爲它是更清潔,然後用它的其他變體:

var myDict = new Dictionary<string, object> { 
    { "foo", "bar" }, 
    { "bar", 12345 }, 
    { "jello", new { qux = "fuum", lorem = "ipsum" } } 
}; 
var client = new RestClient("domain name, for example http://localhost:12345"); 
var request = new RestRequest("part of url, for example /Home/Index", Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.AddBody(new { dict = myDict }); // <-- your possible answer 
client.Execute(request); 

對於本示例,端點在聲明中應該有dict參數。