2016-01-20 14 views
5

Mam żądanie RestRequest, które próbuję przekonwertować do HttpClient Uzyskaj żądanie. Czy istnieje sposób, w jaki mogę przesłać parametry w sposób przedstawiony poniżej?HttpClient - dodawanie parametrów do żądania Uzyskaj

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

Nie ma sposobu, aby odpowiedzieć na to pytanie, nie wiedząc więcej o implementacji 'RestRequest'. Nie są to standardowe typy .NET. Jeśli korzystasz z biblioteki, zidentyfikuj ją. –

+0

zmartwiony, to jest RestSharp – legend

+0

Czy możesz wyjaśnić, czy szukasz niestandardowych nagłówków HTTP lub parametrów na żądanie Uri (? Name = value & name1 = value1 ") – dkackman

Odpowiedz

9

Jeśli dobrze pamiętam, AddParameter metoda RestSharp nie ma dodać nagłówki żądania, lecz dodać argumenty URI dla parametrów GET lub POST do treści żądania.

Nie ma analogicznej metody dla HttpClient, więc musisz sam sformatować Uri dla żądania GET.

Oto przydatna metoda, która pobiera słownik par łańcuchów/znaków i formatuje ciąg znaków zapytania 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(); 
} 
Powiązane problemy