2017-06-12 27 views
0

我需要传递的参数之一的HttpRequest(POST)。如何不编码RestSharp参数

比方说我们有“someParam”参数,我们需要通过“一些+价值”值。

当使用request.AddParameter( “someParam”, “一些+值”); - 值被自动转换为“一些%2Bvalue”和在请求它看起来像“someparam =一些%2Bvalue”。但该应用程序只理解+

有什么办法如何将参数添加到请求,但不编码它???

回答

0

在服务器端应该是“有些%2Bvalue”解码“有些+价值”。如果不是,对你更好的解决方案是将值分开来:

request.AddParameter("someParam", "some"); 
request.AddParameter("someParamValue", "value"); 

而在服务器端只是解析参数some+value,你想要的。

另一个解决方法将替换字符串“%2”与“+”。但是,分离价值还是更好的办法。

用于获取可能的解决方法:

string resource = "something"; 
    var client = new RestClient(baseurl+ resource +"?"+"someParam"+"="+"some+value"); 
    var request = new RestRequest(resource, method); 
    IRestResponse<T> response = client.Execute<T>(request); 
    return response.Data; 

所以,你必须自己撰写的URL,并提供其整体要求。

+0

感谢您的回复。但问题是,我不能更改服务器上的API,因为它不是我的。服务器也用空格替换'+'。更实际的例子是,如果我需要为'companyName'参数添加'Big Star'值,但是如果我将值传递为'Big Star'或'Big%20Star'或'Big%2BStar',服务器会抛出错误,可以通过'Big + Star':request.AddParameter(“companyName”,“Big + Star”);因为它自动编码'+' –

+0

因此,我需要以非编码方式发送'+'的主要意图(看起来像RestSharp强制特殊符号来编码它们,并且没有这样的标志来注意它不是编码) –

+0

你应该联系店主。因为编码是http协议的一部分。 Node.js正在为我解释它,例如ASP.NET。所以对我来说,这似乎是糟糕的服务器实施。 –