2016-01-20 8 views
5

Ich habe eine RestRequest, die ich in HttpClient Get Anforderung konvertieren möchte. Gibt es eine Möglichkeit, Parameter wie unten beschrieben zu senden?HttpClient - Hinzufügen von Parametern zu Get-Anforderung

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

Es gibt keine Möglichkeit, diese Frage zu beantworten, ohne mehr über Ihre Implementierung von 'RestRequest' zu erfahren. Dies sind keine Standard-.NET-Typen. Wenn Sie eine Bibliothek verwenden, identifizieren Sie sie bitte. –

+0

Entschuldigung, das ist RestSharp – legend

+0

Können Sie klären, ob Sie benutzerdefinierte HTTP-Header oder Parameter auf der Anfrage Uri suchen (? Name = Wert & Name1 = Wert1 ") – dkackman

Antwort

9

Wenn ich mich richtig erinnere, RestSharp der AddParameter Methode nicht Request-Header hinzufügt, sondern Uri Argumente für GET oder Anfrage Körperparameter für POST hinzufügen.

Es gibt keine analoge Methode für HttpClient, so dass Sie den Uri für eine GET-Anfrage selbst formatieren müssen.

Hier ist eine Methode, die ich finde handlich, die ein Wörterbuch der String/Objekt-Paare nehmen und formatieren eine Uri-Abfrage-Zeichenfolge.

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(); 
} 
Verwandte Themen