Завантаження веб-сторінки

C++:
Завантаження веб-сторінки

Як зробити:

Для завантаження веб-сторінки в C++ можемо скористатися бібліотекою cURL. Ось приклад:

#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL *curl;
    CURLcode res;
    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(CURLE_OK == res) {
            std::cout << "Page content:" << std::endl << readBuffer << std::endl;
        } else {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        }

        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();
    return 0;
}

При запуску коду видасть вміст сторінки http://example.com.

Поглиблено:

Завантаження веб-сторінок – давня ідея, що стартувала з народженням інтернету. Історично, це робилося через CLI засоби типу wget чи curl. У C++, libcurl є однією з основних бібліотек для таких завдань, проте існують альтернативи, як Boost.Asio чи різні HTTP клієнтські бібліотеки. При використанні libcurl, важливими деталями є обробка повернених callbacks та правильне управління пам’яттю.

Дивись також: