2016-01-21 64 views
0

我试图发送POST请求并以特定格式格式化查询字符串。除了第一个参数外,顺序并不重要,但我没有成功。将URL查询字符串附加到请求

我需要什么:

本地主机/ someapp/API/DoSomething的/ 5335?save=false&userid=66462

什么我的一些尝试都吐了出来:

http://localhost/someapp/api/dosomething/?Id=29455&save=false&userId=797979 http://localhost/someapp/api/dosomething/?save=false&userId=797979

我如何格式化的要求:

request.AddQueryParameter("Id", "29455"); 
    request.AddQueryParameter("save", "false"); 
    request.AddQueryParameter("user", "4563533245"); 

如果我尝试AddParameterId它不会附加在查询字符串(我想是因为它是一个POST而不是GET),使韩元”工作。该API并不期待一个形式,它的期待:

(string id, List<Dictionary<string,string>>)

我可以用一个StringBuilder,但感觉不对。我不确定UrlSegment是否是最好的方法,因为我基本上会窃听查询字符串。有没有办法以我需要使用RestSharp API的格式来格式化我的请求?

+0

您可能喜欢[Flurl](http://tmenier.github.io/Flurl/)构建(和调用)URL的方法。它比RestSharp略少一些。 [免责声明:我是作者] –

回答

0

我最终什么事用的就是UrlSegment,然后不停的.AddQueryParameter方法,所以最终的代码块的样子:

var url = new RestClient(localhost/someapp/api/dosomething/{id}); 
var request  = new RestRequest(Method.POST); 

request.AddParameter("Id", "5335", ParameterType.UrlSegment); 
request.AddQueryParameter("save", "true"); 
request.AddQueryParameter("UserId", "5355234"); 

它生产我所需要的URI。