Libcurl के साथ Http स्थिति कोड?


92

Curl_easy_perform कॉल करने के बाद मुझे HTTP स्थिति कोड (जैसे 200 या 500) कैसे मिलेगा?


7
अच्छा प्रश्न। एक और एक हो सकता है, कैसे एक स्थिति संदेश प्राप्त करने के लिए .. :)
mykhal

जवाबों:


135

http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html

CURLINFO_RESPONSE_CODE

पिछले प्राप्त HTTP या FTP कोड प्राप्त करने के लिए एक पॉइंटर को लंबे समय तक पास करें। यह
विकल्प को libcurl 7.10.7 और इससे पहले के CURLINFO_HTTP_CODE के रूप में जाना जाता था। यह
कोई सर्वर प्रतिक्रिया कोड प्राप्त होने पर शून्य हो जाएगा। ध्यान दें कि ए
प्रॉक्सी की कनेक्ट प्रतिक्रिया को CURLINFO_HTTP_CONNECTCODE के साथ पढ़ा जाना चाहिए 
और यह नहीं। 
curl_code = curl_easy_perform (session);
long http_code = 0;
curl_easy_getinfo (session, CURLINFO_RESPONSE_CODE, &http_code);
if (http_code == 200 && curl_code != CURLE_ABORTED_BY_CALLBACK)
{
         //Succeeded
}
else
{
         //Failed
}

5

अन्य उत्तर बिल्कुल सही है, लेकिन मैं यह भी जोड़ना चाहूंगा कि हाथ से त्रुटि कोड की जांच करना बुद्धिमानी नहीं हो सकता है, 200कोड केवल कोड नहीं है जो सफलता को दर्शाता है।

मैं libcurl विकल्प का उपयोग recoment था CURLOPT_FAILONERROR कि जब सक्रिय कर देगा पर विचार libcurl 400और 500-category स्थितियां एक अनुरोध विफलता और नहीं लौटेगा CURLE_OKप्रदर्शन से।


इसके विकल्प के रूप में, विकल्प के आधार पर, अन्य गैर "200 श्रृंखला" कोड हैं जो एक सफलता हैं, इस समझ के साथ कि अधिक काम करना आवश्यक है, दो सबसे अच्छे 301 और 302 में से एक हैं। निश्चित रूप से कर्ल हो सकते हैं इनको स्वचालित रूप से संभालने के लिए सेट अप किया जा सकता है, लेकिन ऐसे मामले भी हो सकते हैं जहां एप्लिकेशन उन्हें स्वयं संभालना चाहता है। एक संभावना तब हो सकती है जब क्लाइंट प्रमाणीकरण के साथ https: // का उपयोग किया जाता है, और 301/30 वीं परिणाम के लक्ष्य के लिए पूरी तरह से नई प्रमाणपत्र श्रृंखला की आवश्यकता होती है।
19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.