2016-01-20 17 views
5

Tôi có một RestRequest mà tôi đang cố gắng chuyển đổi thành HttpClient Nhận yêu cầu. Có cách nào tôi có thể gửi các tham số theo cách nó được thực hiện dưới đây?HttpClient- thêm tham số để Nhận yêu cầu

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

Không có cách nào để trả lời câu hỏi này mà không biết thêm về việc triển khai 'RestRequest' của bạn. Đây không phải là các loại .NET chuẩn. Nếu bạn đang sử dụng thư viện, vui lòng xác định thư viện. –

+0

xin lỗi, đây là RestSharp – legend

+0

Bạn có thể làm rõ liệu bạn đang tìm kiếm tiêu đề HTTP hoặc tham số tùy chỉnh trên yêu cầu Uri (? Name = value & name1 = value1 ") – dkackman

Trả lời

9

Nếu tôi nhớ chính xác, phương pháp AddParameter của RestSharp không thêm tiêu đề yêu cầu mà là thêm đối số Uri cho GET hoặc yêu cầu tham số cơ thể cho POST.

Không có phương pháp tương tự cho HttpClient do đó bạn cần định dạng Uri cho yêu cầu GET mình.

Đây là phương pháp tôi thấy thuận tiện sẽ lấy từ điển cặp chuỗi/đối tượng và định dạng chuỗi truy vấn 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(); 
} 
Các vấn đề liên quan