2013-05-18 8 views
6

मैं ग्राहक पक्ष पर विकास के लिए RestSharp का उपयोग कर रहा हूं। मैं सर्वर पक्ष पर अपने कस्टम एपीआई के लिए रूबी अंगूर मणि का भी उपयोग कर रहा हूं। अंगूर मणि काम करता है सहीRestSharp हेडर परिवर्तन स्वीकार करें

curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline 

कंसोल के माध्यम से स्वीकार करें application/vnd.twitter-v1+json

को HTTP हेडर f.e और परीक्षण आदेश की स्थापना करके संस्करण कर सकते हैं लेकिन जब मैं हैडर RestRequest के लिए मैं सर्वर पर error 404 हो रही है स्थापित करने के लिए कोशिश कर रहा हूँ।

मुझे नहीं पता कि ऐसा क्यों है। मुझे एक और मुद्दा मिला है कि सर्वर 406 error देता है - लेकिन मेरे मामले में 404.

मैं स्वीकृति हेडर के लिए कस्टम मान कैसे रख सकता हूं?

उत्तर

5

आप AddHeader विधि के साथ एक कस्टम Accept हैडर सेट कर सकते हैं ...

var client = new RestClient("http://example.com/api"); 
var request = new RestRequest("statuses/public_timeline", Method.GET); 
request.AddHeader("Accept", "application/vnd.twitter-v1+json"); 
var response = client.Execute(request); 
var json = response.Content; 

अगर आप JSON खुद deserialize करने को तैयार हैं ठीक काम करना चाहिए।


आप सामान्य Execute<T> विधि है, जो आप के लिए स्वत: अक्रमांकन करता है के उपयोग बनाना चाहते हैं, आप समस्या में पड़ जाएगा ...

RestSharp documentation about deserialization से:

RestSharp शामिल एक्सएमएल और जेएसओएन को संसाधित करने के लिए deserializers। प्रतिक्रिया प्राप्त करने पर, RestClient सर्वर द्वारा लौटाए गए सामग्री प्रकार के आधार पर उपयोग करने के लिए सही deserializer चुनता है। डिफ़ॉल्ट ओवरराइड किया जा सकता है (अनुकूलन देखें)। बिल्ट-इन समर्थित सामग्री प्रकार हैं:

  • आवेदन/json - JsonDeserializer
  • application/xml - XmlDeserializer
  • पाठ/json - JsonDeserializer
  • text/xml - XmlDeserializer
  • * - XmlDeserializer (अन्य सभी सामग्री प्रकार निर्दिष्ट नहीं हैं)

यह यह कह रहा है कि, डिफ़ॉल्ट रूप से, यदि प्रतिक्रिया का सामग्री प्रकार सूचीबद्ध लोगों में से एक नहीं है, तो RestSharp आपके डेटा पर XmlDeserializer का उपयोग करने का प्रयास करेगा। यह अतिरिक्त काम के साथ अनुकूलन योग्य है।

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