2016-01-20 66 views
5

我有一个RestRequest,我试图转换为HttpClient获取请求。有什么办法可以按照下面的方式发送参数吗?HttpClient-添加参数获取请求

private readonly IRestClient _restClient; 
public Type GetInfo(string name) 
{ 
    var request = new RestRequest(url, Method.GET); 
    request.AddParameter("name", "ivar"); 
    var response = _restClient.ExecuteRequest(request); 
    return ExecuteRequest<Type>(request); 
} 
+1

如果不了解更多关于“RestRequest”的实现的知识,就无法回答这个问题。这些不是标准的.NET类型。如果您正在使用图书馆,请确定它。 –

+0

对不起,这是RestSharp – legend

+0

您能澄清您是否正在寻找自定义HTTP标头或参数请求Uri(?name = value&name1 = value1“) – dkackman

回答

9

如果我没有记错,RestSharp的AddParameter方法不添加请求头,而是添加乌里参数为POST或GET请求体参数。

HttpClient没有类似的方法,因此您需要自己格式化Uri以获取GET请求。

这里有一个方法,我觉得这将需要一个字符串/对象的字典和格式的Uri查询字符串。

public static string AsQueryString(this IEnumerable<KeyValuePair<string, object>> parameters) 
{ 
    if (!parameters.Any()) 
     return ""; 

    var builder = new StringBuilder("?"); 

    var separator = ""; 
    foreach (var kvp in parameters.Where(kvp => kvp.Value != null)) 
    { 
     builder.AppendFormat("{0}{1}={2}", separator, WebUtility.UrlEncode(kvp.Key), WebUtility.UrlEncode(kvp.Value.ToString())); 

     separator = "&"; 
    } 

    return builder.ToString(); 
}