SMS-Versand mit C++: API-Bibliothek LibCurl und REST-Anfragen

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 mit C++: Vollständige Anleitung zur Nutzung der API mit der Bibliothek LibCurl



Der Versand von SMS-Nachrichten ist eine der Schlüsselfunktionen moderner Anwendungen: von der Zwei-Faktor-Authentifizierung bis hin zu Benachrichtigungen über den Bestellstatus. Im C++-Ökosystem gibt es keine integrierten Mittel für die Arbeit mit SMS-Gateways, jedoch kann mit der universellen Bibliothek libcurl und standardmäßigen HTTP-Anfragen problemlos jede REST-API eines SMS-Anbieters integriert werden. In diesem Artikel werden wir analysieren, wie man eine zuverlässige Funktion zum Versenden von SMS mit C++ unter Verwendung der Bibliothek LibCurl schreibt, und typische Beispiele für gängige Dienste (Twilio, SMS Aero, Bytehand) betrachten.



Warum LibCurl?

LibCurl ist eine plattformübergreifende Bibliothek zur Datenübertragung über verschiedene Protokolle (HTTP, HTTPS, FTP usw.). Sie unterstützt:

  • GET-, POST-, PUT-, DELETE-Anfragen
  • SSL/TLS (HTTPS)
  • Arbeit mit Headern und Anfragekörper
  • Verarbeitung von Serverantworten

Für den SMS-Versand reicht es aus, eine POST-Anfrage an die API des gewählten Anbieters zu senden und die erforderlichen Parameter (Telefonnummer, Text, API-Schlüssel) zu übergeben. LibCurl übernimmt die gesamte Low-Level-Arbeit mit Sockets und Verschlüsselung.



Installation der Bibliothek

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 vorkompilierte DLLs von der offiziellen Website heruntergeladen oder vcpkg verwendet werden:

vcpkg install curl

Einbindung im Code:

#include <curl/curl.h>#include <string>#include <json/json.h>  // falls JSON verwendet wird (nlohmann/json)


Grundlegende Struktur der SMS-Funktion

Wir erstellen eine universelle Funktion sendSms, die die API-URL, den Schlüssel, die Empfängernummer und den Nachrichtentext entgegennimmt. Für die Arbeit mit JSON ist die Bibliothek nlohmann/json praktisch (Header-only, kein Build erforderlich).



#include <iostream>#include <string>#include <curl/curl.h>#include <nlohmann/json.hpp>

using json = nlohmann::json;

// Callback 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& url, const std::string& apiKey, const std::string& phone, const std::string& message) { CURL *curl; CURLcode res; std::string readBuffer;

curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init();

if(!curl) return false;

// JSON-Anfragekörper erstellen json payload; payload["phone"] = phone; payload["text"] = message; payload["api_key"] = apiKey;

std::string jsonStr = payload.dump();

// HTTP-Anfrage konfigurieren struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); headers = curl_slist_append(headers, "Accept: application/json");

curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonStr.c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

// Anfrage ausführen res = curl_easy_perform(curl);

// Bereinigung curl_easy_cleanup(curl); curl_global_cleanup();

if(res != CURLE_OK) { std::cerr << "Curl-Fehler: " << curl_easy_strerror(res) << std::endl; return false; }

// Antwort parsen (Beispiel für Twilio) try { json response = json::parse(readBuffer); if(response.co

Empfehlungen