2013-05-27 6 views
16

मैं सी # .NET 3.5 में एक विश्वसनीय API क्लाइंट बना रहा हूं।RestSharp का उपयोग कर HTTP अनुरोध निकाय का उपयोग कैसे करें?

मैंने पहली बार इसे पुराने पुराने HttpWebClient (और HttpWebResponse) के साथ बनाना शुरू किया, मैं जो कुछ भी चाहता था वह कर सकता था। मुझे खुशी थी। जेएसओएन प्रतिक्रिया से स्वचालित deserialization पर एकमात्र चीज पर अटक गया था।

तो, मैंने रेस्टशर्प (104.1) नामक एक अद्भुत लाइब्रेरी के बारे में सुना है जो रीस्टफुल एपीआई क्लाइंट के विकास को आसान बनाता है, और स्वचालित रूप से JSON और XML प्रतिक्रियाओं को deserialize। मैंने इस पर अपना पूरा कोड बदल दिया, लेकिन अब मुझे एहसास है कि मैं उन चीज़ों को नहीं कर सकता जो मैं HttpWebClient और HttpWebResponse के साथ कर सकता हूं, जैसे कच्चे अनुरोध निकाय को एक्सेस और संपादित करना।

किसी के पास कोई समाधान है?

संपादित करें: मैं (request.AddBody() के साथ) अनुरोध शरीर स्थापित करने के लिए कैसे पता है, मेरी समस्या यह है कि मैं इस अनुरोध शरीर स्ट्रिंग मिलता है, इसे संपादित करना और अनुरोध में इसे फिर से सेट (पर अनुरोध शरीर को अद्यतन करने के लिए चाहते है फ्लाई)

उत्तर

34

अनुरोध निकाय पैरामीटर का एक प्रकार है। एक जोड़ने के लिए, आप इनमें से किसी एक ...

req.AddBody(body); 
req.AddBody(body, xmlNamespace); 
req.AddParameter("text/xml", body, ParameterType.RequestBody); 
req.AddParameter("application/json", body, ParameterType.RequestBody); 

कर शरीर पैरामीटर आप req.Parameters संग्रह में आइटम के लिए देख सकते हैं जहां TypeParameterType.RequestBody के बराबर है प्राप्त करने के लिए कर सकते हैं।

RestRequest कक्षा here के लिए कोड देखें। इस पैरामीटर सेट कर दिया जाता

है, यह मूल्य अनुरोध के शरीर के रूप में भेजा जाएगा है:

यहाँ RestSharp docs on ParameterType.RequestBody में क्या कहना है है। पैरामीटर का नाम अनदेखा किया जाता है, और इसलिए अतिरिक्त अनुरोधबॉडी पैरामीटर्स - केवल 1 स्वीकार किया जाता है।

अनुरोधबॉडी केवल पोस्ट या पुट अनुरोधों पर काम करता है, क्योंकि केवल वे वास्तव में शरीर भेजते हैं।

आप मापदंडों GetOrPost है और साथ ही, वे RequestBody के ऊपर लिख देगा - RestSharp उन्हें गठबंधन नहीं होगा, लेकिन यह बजाय दूर RequestBody पैरामीटर फेंक देते हैं।

पढ़ने के लिए/ऑन-द-मक्खी शरीर पैरामीटर को अद्यतन करने के लिए, आप की कोशिश कर सकते हैं:

var body = req.Parameters.Where(p => p.Type == ParameterType.RequestBody).FirstOrDefault(); 
if (body != null) 
{ 
    Console.WriteLine("CurrentBody={0}", body.Value); 
    body.Value = "NewBodyValue"; 
} 

या उस में नाकाम रहने के लिए, एक अलग शरीर के साथ RestRequest वस्तु की एक नई प्रतिलिपि बनाएँ।

+1

उत्कृष्ट, धन्यवाद! पूरा कामकाजी कोड है: http://pastebin.com/0c4bqPNW – Epoc

संबंधित मुद्दे