C++ में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना

\n\n

सॉफ्टवेयर विकास की आधुनिक दुनिया में, HTTP के माध्यम से दूरस्थ सर्वरों के साथ बातचीत करने की क्षमता एक बुनियादी कौशल है। चाहे वह API से डेटा डाउनलोड करना हो, फॉर्म भेजना हो या वेब सेवाओं के साथ काम करना हो, C++ HTTP-क्लाइंट बनाने के लिए कई शक्तिशाली उपकरण प्रदान करता है। इस लेख में, हम C++ में HTTP-अनुरोधों को सही तरीके से करने का तरीका समझेंगे, लोकप्रिय लाइब्रेरीज़ पर विचार करेंगे और कार्यशील कोड उदाहरण लिखेंगे।

\n\n

C++ HTTP-अनुरोधों के लिए क्यों?

\n\n

Python या JavaScript के विपरीत, C++ की मानक लाइब्रेरी में HTTP के लिए अंतर्निहित समर्थन नहीं है। हालाँकि, यह कोई समस्या नहीं है: समय-परीक्षित लाइब्रेरीज़ मौजूद हैं जो आसानी से और कुशलता से अनुरोध भेजने की अनुमति देती हैं। मुख्य विकल्प:

\n\n
    \n
  • libcurl (cURL) — सबसे लोकप्रिय क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी।
  • \n
  • Boost.Beast — Boost.Asio पर आधारित आधुनिक लाइब्रेरी।
  • \n
  • WinHTTP — Windows के लिए अंतर्निहित समाधान।
  • \n
  • Qt Network — Qt परियोजनाओं के लिए।
  • \n
\n\n

इस लेख में, हम पहले दो पर ध्यान केंद्रित करेंगे, क्योंकि वे सबसे बहुमुखी हैं और अधिकांश कार्यों के लिए उपयुक्त हैं।

\n\n

1. libcurl का उपयोग करके HTTP-क्लाइंट

\n\n

libcurl एक समय-परीक्षित लाइब्रेरी है जो HTTP, HTTPS, FTP और कई अन्य प्रोटोकॉल का समर्थन करती है। इसका उपयोग करना आसान है और यह अच्छी तरह से प्रलेखित है।

\n\n

libcurl की स्थापना

\n\n

Linux (Ubuntu/Debian) के लिए:

\n
sudo apt-get install libcurl4-openssl-dev
\n\n

Windows के लिए, आप curl.se की आधिकारिक साइट से पूर्व-निर्मित बाइनरी फ़ाइलें डाउनलोड कर सकते हैं या vcpkg का उपयोग कर सकते हैं:

\n
vcpkg install curl
\n\n

सरल GET-अनुरोध

\n\n

सर्वर से डेटा प्राप्त करने का एक बुनियादी उदाहरण लिखते हैं:

\n\n
#include <iostream>\n#include <string>\n#include <curl/curl.h>\n\n// डेटा लिखने के लिए कॉलबैक फ़ंक्शन\nstatic size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {\n    size_t totalSize = size * nmemb;\n    output->append((char*)contents, totalSize);\n    return totalSize;\n}\n\nint main() {\n    CURL* curl = curl_easy_init();\n    if (!curl) {\n        std::cerr << "CURL आरंभीकरण त्रुटि" << std::endl;\n        return 1;\n    }\n\n    std::string response;\n    curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");\n    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);\n    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);\n    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); // परीक्षण के लिए SSL सत्यापन बंद करें\n\n    CURLcode res = curl_easy_perform(curl);\n    if (res != CURLE_OK) {\n        std::cerr << "अनुरोध त्रुटि: " << curl_easy_strerror(res) << std::endl;\n    } else {\n        std::cout << "सर्वर प्रतिक्रिया:\\n" << response << std::endl;\n    }\n\n    curl_easy_cleanup(curl);\n    return 0;\n}
\n\n

कंपाइल करने के लिए -lcurl फ़्लैग का उपयोग करें:

\n
g++ -o http_client http_client.cpp -lcurl
\n\n

JSON भेजने के साथ POST-अनुरोध

\n\n

अब डेटा भेजना जोड़ते हैं:

\n\n
#include <iostream>\n#include <string>\n#include <curl/curl.h>\n\nint main() {\n    CURL* curl = curl_easy_init();\n    if (!curl) return 1;\n\n    std::string response;\n    std::string jsonData = R"({"title": "foo", "body": "bar", "userId": 1})";\n\n    struct curl_slist* headers = nullptr;\n    headers = curl_slist_append(headers, "Content-Type: application/json");\n\n    curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");\n    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonData.c_str());\n    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCal                

ब्लॉग

पुस्तक अनुशंसाएँ