मैं RestSharp का उपयोग कर रहा हूं, और serialization के लिए Json.NET का उपयोग कर रहा हूं (here देखें)।मैं रेस्टशर्प को बीएसओएन का उपयोग कैसे कर सकता हूं?
जेसन.NET बीएसओएन का समर्थन करता है, और चूंकि मेरे कुछ अनुरोधों में द्विआधारी डेटा के विशाल ब्लॉक हैं, मुझे लगता है कि यह नाटकीय रूप से मेरे आवेदन को तेज करेगा। हालांकि, जहां तक मैं कह सकता हूं, RestSharp में बीएसओएन के लिए कोई अंतर्निहित समर्थन प्रतीत नहीं होता है।
जेसन.NET का उपयोग RestSharp के लिए एक कस्टम धारावाहिक के रूप में कार्यान्वित किया गया है, और इसलिए पहली नज़र में ऐसा लगता है कि बीएसओएन का उपयोग करने के लिए उस कस्टम धारावाहिक को संशोधित करना संभव होगा। लेकिन, Serialize
RestSharp.Serializers.ISerializer
इंटरफ़ेस का तरीका string
देता है - जो कि (मुझे लगता है) बीएसओएन के लिए अनुपयुक्त है। इसलिए, मुझे लगता है कि इस परिवर्तन को लागू करने के लिए RestSharp में कुछ और महत्वपूर्ण बदलाव आएंगे।
क्या किसी ने ऐसा करने का कोई तरीका निकाला है?
अद्यतन: मैं RestSharp स्रोत को देखा और पाया कि RestRequest.AddBody
विधि है कि मेरे वस्तु लेता है और अनुरोध शरीर में यह धारावाहिक करता है अंततः Request.AddParameter
कॉल (धारावाहिक वस्तु डेटा के साथ, और पैरामीटर प्रकार RequestBody
)।
मुझे लगा कि मैं बीएसओएन को अपनी ऑब्जेक्ट को क्रमबद्ध करने में सक्षम हो सकता हूं और फिर सीधे Request.AddParameter
पर कॉल कर सकता हूं - और वास्तव में मैं कर सकता हूं। हालांकि, जब RestSharp RestRequest
निष्पादित करता है, तो यह बाइनरी सामग्री को अनुरोध में डालने में विफल रहता है, क्योंकि यूटीएफ -8 एन्कोडेड अनुरोध सामग्री के बारे में अन्य एम्बेडेड धारणाएं हैं।
इस प्रकार यह इस हैक की तरह दिखता है काम नहीं होगा - वहाँ ही RestSharp के लिए किए गए कुछ परिवर्तन करने की आवश्यकता होगी, और मैं इस काम के लिए आदमी ...
अद्यतन 2 नहीं कर रहा हूँ: मैं डिस्गर का उपयोग करने के लिए डीबगर का उपयोग करने का फैसला करने के लिए यह पता लगाने के लिए कि कितना रेस्टशर्प मुझे शरीर-एन्कोडिंग मुद्दे को दूर करने के लिए बदलना होगा, इसलिए मैंने रेस्टशर्प के अपने NuGet संस्करण को बदल दिया और मेरे समाधान में RestSharp प्रोजेक्ट को शामिल किया। और ... काम किया।
यह पता चला है कि पिछले कुछ महीनों में रेस्टशर्प में बदलाव आया है जो अभी तक NuGet संस्करण में नहीं है।
तो, आप अब AddParameter
उपयोग कर सकते हैं और पहले से BSON एन्कोड वस्तु में पारित, और RestSharp शिकायत के बिना सर्वर के लिए रवाना भेज देंगे।
इस उत्तर में मुझे बहुत मदद मिली, अगर किसी को अपवाद मिल रहा है "अनुक्रम में अधिक था n एक तत्व "हैंडलर जोड़ते समय, मैंने डिफ़ॉल्ट शीर्षलेख को RestClient उदाहरण में जोड़ने से पहले हैंडलर जोड़कर इसे ठीक किया – yvesmancera