2016-01-20 12 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 विधि अनुरोध हेडर जोड़ नहीं होता है बल्कि यह पोस्ट के लिए GET या अनुरोध के मुख्य मापदंडों के लिए उरी तर्क जोड़ें।

HttpClient के लिए कोई समान विधि नहीं है, इसलिए आपको अपने अनुरोध के लिए उरी को प्रारूपित करने की आवश्यकता है।

यहां एक तरीका है जो मुझे आसान लगता है जो स्ट्रिंग/ऑब्जेक्ट जोड़े का एक शब्दकोश लेगा और यूरी क्वेरी स्ट्रिंग को प्रारूपित करेगा।

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(); 
} 
संबंधित मुद्दे