如何不编码RestSharp参数

时间:2017-06-12 07:52:31

标签: c# restsharp

我需要将一个参数传递给HttpRequest(POST)。

假设我们有' someParam '参数,我们需要通过' 某些+值'值。

使用 request.AddParameter(" someParam","某些+值"); 时 - 值会自动转换为' 一些%2Bvalue '并在请求中看起来像 someparam = some%2Bvalue '。但该应用程序只能理解 +

有什么方法可以为请求添加参数但不编码吗???

2 个答案:

答案 0 :(得分:1)

在服务器端应该是某些%2Bvalue'解码为"某些+值"。如果不是,更好的解决方案是将值分隔为:

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

在服务器端,只需根据需要将参数解析为some+value

另一种解决方法是替换字符串"%2"用" +"。但仍然是分离价值观的更好方法。

GET的可能解决方法:

    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;

所以你必须自己编写网址并提供整体请求。

答案 1 :(得分:0)

您可以使用:

System.Web.HttpUtility.UrlDecode

例如:

var url = getUrlFromConfig();
var params = HttpUtility.UrlDecode("$foo/bar?someParam={some}&someParamValue={value}");
var client = new RestClient(apiUrl + params);

这将生成一个有效的URL,而不会出现您的问题。