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/RHELFür Windows können vorkompilierte DLLs von der offiziellen Website heruntergeladen oder vcpkg verwendet werden:
vcpkg install curlEinbindung 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 Auch in der Bibliothek
Arbeiten mit Excel in JavaScript (Node.js): Bibliotheken und Beispiele
Redis-Client (go-redis) für Go: Vollständige Anleitung mit Beispielen
KeychainAccess für Swift: Vollständige Anleitung mit Beispielen
JWT-Tokens in C# (.NET): Vollständiger Leitfaden mit Beispielen