2016-01-20 155 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(); 
}