SMS-Versand in C++ mit der API-Bibliothek libcurl

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

SMS-Versand in C++ mit der Bibliothek libcurl



In der modernen Entwicklung ist häufig die Integration mit externen Diensten zum Versenden von SMS-Nachrichten erforderlich. In C++ kann diese Aufgabe effizient mit der Bibliothek libcurl gelöst werden – einem leistungsstarken Werkzeug für die Arbeit mit HTTP/HTTPS-Protokollen. Die Bibliothek libcurl bietet eine einfache und flexible API zum Ausführen von Anfragen an REST-Dienste, einschließlich des Versendens von SMS über die API von Anbietern.



Was ist libcurl?



libcurl ist eine plattformübergreifende Bibliothek zur Datenübertragung über verschiedene Protokolle (HTTP, HTTPS, FTP, SMTP und andere). Sie wird aufgrund ihrer Stabilität, Leistung und umfangreichen Dokumentation häufig in C++-Projekten eingesetzt. Für den SMS-Versand benötigen wir die Funktionalität von HTTP-POST-Anfragen mit der Übertragung von JSON- oder URL-kodierten Daten.



Installation von libcurl



In den meisten Linux-Distributionen kann libcurl über den Paketmanager installiert werden:



sudo apt-get install libcurl4-openssl-dev  # Ubuntu/Debiansudo yum install libcurl-devel             # CentOS/RHEL


Für Windows können Sie vcpkg verwenden oder vorgefertigte Builds von der offiziellen Website curl.se herunterladen.



Basisbeispiel: SMS-Versand über HTTP POST



Betrachten wir den SMS-Versand mit der API eines gängigen Dienstes (z. B. Twilio, Nexmo oder eines russischen Äquivalents). Im folgenden Beispiel senden wir eine POST-Anfrage mit JSON-Daten, die die Empfängernummer und den Nachrichtentext enthalten.



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

// Callback-Funktion zum Schreiben der Serverantwortstatic size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) { ((std::string*)userp)->append((char*)contents, size * nmemb); return size * nmemb;}

bool sendSms(const std::string& apiKey, const std::string& phone, const std::string& message) { CURL* curl; CURLcode res; std::string response; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if(curl) { // URL des API-Endpunkts (durch Ihren ersetzen) curl_easy_setopt(curl, CURLOPT_URL, "https://api.smsprovider.com/v1/send"); // Header: Inhaltstyp und Autorisierung struct curl_slist* headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); std::string authHeader = "Authorization: Bearer " + apiKey; headers = curl_slist_append(headers, authHeader.c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // JSON-Anfragekörper erstellen std::string jsonData = "{"; jsonData += "\\"phone\\":\\"" + phone + "\\","; jsonData += "\\"message\\":\\"" + message + "\\""; jsonData += "}"; curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonData.c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); // Anfrage ausführen res = curl_easy_perform(curl); // Ergebnis prüfen if(res != CURLE_OK) { std::cerr << "curl-Fehler: " << curl_easy_strerror(res) << std::endl; curl_easy_cleanup(curl); curl_global_cleanup(); return false; } // HTTP-Antwortcode abrufen long httpCode; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode); curl_easy_cleanup(curl); curl_global_cleanup(); if(httpCode == 200 || httpCode == 201) { std::cout << "SMS erfolgreich gesendet. Antwort: " << response << std::endl; return true; } else { std::cerr << "Serverfehler. HTTP " << httpCode << ": " << response << std::endl;

Empfehlungen