不要在RestSharp中编码参数

tho*_*asb 5 restsharp

我正在使用RestSharp来访问RubyOnRails API.您可能知道,当参数名称在表单中时,RoR喜欢model_name[property].另一方面,RestSharp不喜欢它.

Fiddler说我把它发送到服务器:

user%5Bemail%5D=user%40email.com&user%5Bpassword%5D=test
Run Code Online (Sandbox Code Playgroud)

看起来R#在发送数据时对参数和值进行编码(与Curl不同,它看起来像是有选择地编码).虽然在大多数情况下我认为这很好,但在这种特殊情况下,它会使API返回401,因为它不了解参数.

是否可以要求R#不对请求的参数进行编码?

谢谢 !

编辑

好的,在R#源代码中,我找到了方法RestClient.EncodeParameters,所以看起来参数的名称总是被编码.我想我将不得不叉它:(

tho*_*asb 5

在 RestSharp 源中,我发现参数总是被编码(名称和值),所以我想如果我想添加一个额外的参数,我将不得不分叉它。


bir*_*men 5

我知道这已经得到了解答,但我想补充一下,因为它对我有用.有一个(虽然是hacky)解决方案.为不应编码的参数构建自己的uri.

var uri = string.Concat("/path/to/your/api", "?paramThatShouldNotBeEncoded=", DateTime.Now.Date.AddDays(1).ToString("O"));
var restRequest = new RestRequest(uri, Method.GET);
Run Code Online (Sandbox Code Playgroud)


Rub*_*yan 5

从RestSharp版本106.4.0开始,您可以ParameterType.QueryStringWithoutEncoderequest.AddParameter()函数中使用:

        request.AddParameter("user_id", @"45454545%6565%65", ParameterType.QueryStringWithoutEncode);
Run Code Online (Sandbox Code Playgroud)