2017-06-12 28 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。所以對我來說,這似乎是糟糕的服務器實施。 –