RestSharp इस प्रकार लग रहा है का उपयोग कर एक ठेठ http कॉल:RestSharp से त्रुटि प्रतिक्रियाओं को संभालने के लिए उचित रणनीति क्या है?
var client = new RestClient("http://exampleapi.com");
var request = new RestRequest("someapi", Method.GET);
IRestResponse response = client.Execute(request);
प्रलेखन से
https://github.com/restsharp/RestSharp/wiki/Getting-Started पर
:
अगर वहाँ एक नेटवर्क परिवहन त्रुटि है (नेटवर्क काम कर रहा है, DNS लुकअप विफल, आदि), RestResponse.Status को ResponseStatus.Error पर सेट किया जाएगा, अन्यथा यह ResponseStatus होगा। पूर्ण। यदि कोई एपीआई 404 देता है, तो ResponseStatus अभी भी पूरा हो जाएगा। यदि आपको लौटाए गए HTTP स्टेटस कोड तक पहुंच की आवश्यकता है तो आपको इसे RestResponse.StatusCode पर मिल जाएगा।
- RestClient.Execute() नेटवर्क अनुरोध विफल रहता है, एक अपवाद
- फेंक कभी नहीं होगा यानी एक स्थिति उत्पन्न होती है कि होगा:
इसके अलावा, निम्नलिखित RestSharp प्रतिक्रियाओं का व्यवहार होना दिखाई आम तौर पर एक अपवाद (जैसे नेटवर्क का समय समाप्त नहीं हुआ, पहुंच योग्य नहीं किया जा सकता), तो response.ErrorException
कुछ अपवाद-व्युत्पन्न प्रकार और response.ErrorMessage
के साथ पॉप्युलेट किया जाएगा, कुछ संदेश त्रुटि स्ट्रिंग और response.StatusCode
कोपर सेट किया जाएगा, Response.Status.Aborted
, ResponseStatus.TimedOut
, आदि
response.StatusCode
, NotFound
पर सेट हो जाएगा अगर कोई आदि, Response.ErrorException
और Response.Error
हो जाएगा null
और response.StatusCode
को 'ResponseStatus.Completed' पर सेट किया जाएगा।मुझे कुछ संभावित प्रतिक्रियाएं याद आती हैं, लेकिन मुझे लगता है कि यह जिंदगी है।
यह देखते हुए, मुझे प्रतिक्रिया सफलता या विफलता को कैसे निर्धारित करना चाहिए? विकल्प शामिल हैं:
- हैं
ErrorException == null
बाद में http प्रतिक्रिया की जाँच - तो
response.ResponseStatus == ResponseStatus.Completed
तो Response.StatusCode की जाँच करें और परिणाम के आधार पर, प्रतिक्रिया डेटा हड़पने और तदनुसार संभाल नहीं आप क्या अपेक्षा करता है, तो - हैं http प्रतिक्रिया त्रुटि त्रुटि के प्रकार के आधार पर कुछ त्रुटि है
ErrorException
- और ...?
मैं इस पर विचार नहीं करना चाहता हूं लेकिन मुझे लगता है कि यह साफ करने के लिए एक पैटर्न (बेहतर अवधि की कमी के लिए) है।