2016-01-20 15 views
5

Ho un RestRequest che sto cercando di convertire in HttpClient Richiedi richiesta. C'è un modo in cui posso inviare i parametri come è fatto sotto?HttpClient - aggiunta di parametri a Richiesta

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

Non c'è modo di rispondere a questa domanda senza saperne di più sulla tua implementazione di 'RestRequest'. Questi non sono tipi standard di .NET. Se stai usando una biblioteca, per favore identificala. –

+0

scusate, questo è RestSharp – legend

+0

Potete chiarire se state cercando intestazioni o parametri HTTP personalizzati sulla richiesta Uri (? Name = value & name1 = value1 ") – dkackman

risposta

9

se non ricordo male, il metodo di RestSharp AddParameter non aggiunge intestazioni di richiesta, ma piuttosto aggiungere argomenti Uri per i parametri di richiesta GET o POST corpo per.

Non esiste un metodo analogo per HttpClient, quindi è necessario formattare l'Uri per una richiesta GET.

Ecco un metodo che trovo utile che richiede un dizionario di coppie stringa/oggetto e formatta una stringa di query 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(); 
}