libcurl für C++: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist libcurl und warum wird es benötigt?

libcurl ist eine leistungsstarke und weit verbreitete, plattformunabhängige Bibliothek zur Datenübertragung über verschiedene Netzwerkprotokolle. In C geschrieben, bietet sie ein C++-Interface (oft als curlpp oder einfach als libcurl-Wrapper bezeichnet) für HTTP-Anfragen, Dateidownloads, FTP, SMTP und viele andere Protokolle. Im C++-Kontext ist libcurl der De-facto-Standard für die Erstellung von HTTP-Clients.

Wofür wird libcurl in C++ verwendet?

  • REST-API-Integration: Senden von GET-, POST-, PUT- und DELETE-Anfragen an Webservices.
  • Dateidownloads: Herunterladen von Bildern, Dokumenten und Archiven aus dem Internet.
  • Daten hochladen: Dateien auf Server laden, Formulare versenden.
  • Webseiten parsen: HTML-Code für die weitere Analyse abrufen.
  • Authentifizierung: Unterstützung für Basic, Digest, OAuth, NTLM und andere Verfahren.
  • Cookie-Verwaltung: Sitzungen und Zustände verwalten.
  • SSL/TLS: Sichere Verbindungen über HTTPS.

Die Bibliothek zeichnet sich durch hohe Leistung, Stabilität und Unterstützung nahezu aller modernen Netzwerkprotokolle aus. Sie wird in Projekten wie cURL (Kommandozeile), PHP (cURL-Erweiterung) und vielen anderen eingesetzt.

Installation von libcurl für C++

Anders als bei Python oder JavaScript gibt es in C++ keinen einheitlichen Paketmanager. Daher hängt die Installation von Ihrem Betriebssystem und Compiler ab.

Installation unter Linux (Ubuntu/Debian)

sudo apt update
sudo apt install libcurl4-openssl-dev

Für andere Distributionen (Fedora, CentOS, Arch) verwenden Sie die entsprechenden Paketmanager (dnf, yum, pacman).

Installation unter macOS

brew install curl

Installation unter Windows

Der einfachste Weg ist die Verwendung von vcpkg:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
.\vcpkg install curl

Oder laden Sie vorkompilierte Binärdateien von der offiziellen curl-Website herunter.

Einbindung in ein CMake-Projekt

find_package(CURL REQUIRED)
target_link_libraries(your_project PRIVATE CURL::libcurl)

Schnellstart: Einfacher HTTP-GET-Request

Schreiben wir ein einfaches Programm, das eine GET-Anfrage an eine Website sendet und die empfangenen Daten ausgibt.

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

// Callback-Funktion zum Schreiben der Daten in einen String
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {
    size_t totalSize = size * nmemb;
    output->append(static_cast<char*>(contents), totalSize);
    return totalSize;
}

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

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.github.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
        
        // Anfrage ausführen
        res = curl_easy_perform(curl);
        
        if (res != CURLE_OK) {
            std::cerr << "Fehler: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Serverantwort:" << std::endl;
            std::cout << response << std::endl;
        }
        
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();
    return 0;
}

Kompilierung:

g++ -o http_client http_client.cpp -lcurl

Wichtige Methoden/Funktionen von libcurl

1. curl_easy_in

Empfehlungen