2014-02-28 19 views
3

我正在使用RestSharp來訪問RubyOnRails API。 正如你可能知道的,當參數名稱的形式爲model_name[property]時,RoR喜歡。另一方面,RestSharp不喜歡它。不要在RestSharp中編碼參數

的Fiddler說我發送這個到服務器:

user%5Bemail%5D=user%40email.com&user%5Bpassword%5D=test 

它看起來如R#同時編碼的參數和值時,它發送該數據(不像捲曲,它看起來像它編碼選擇性)。 雖然大多數情況下我都猜到了,但在這種特殊情況下,它使API返回401,因爲它不理解參數。

是否有可能要求R#不對請求的參數進行編碼?

謝謝!

編輯

好,在R#來源,我找到了方法RestClient.EncodeParameters,所以它看起來像參數的名字總是被編碼。我想我將不得不叉掉它:(

回答

2

我發現參數總是編碼(名稱和值)參數

0

我發現了一個有趣的解決方案...只需解碼你想傳入的參數,restsharp就會將它編碼回它應該是的。例如,我有一個API密鑰,它使用%7和RestSharper進一步編碼它。我解碼的API密鑰,並將其傳遞到RestSharp,它似乎工作!

+0

不爲我 – hellboy

+0

爲我工作 – Arnel

+0

這是不幸的是不行的,這可能是一個邊緣的情況下。我相信這是通過執行此操作解決的MapQuest API密鑰的錯誤。 –

3

我知道這已被回答,但我想添加此答案,因爲它爲我工作。哈cky)解決這個問題。爲不應編碼的參數構建自己的uri。

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