Отправка SMS на C++: API библиотеки libcurl и cpprestsdk

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка SMS на C++: API библиотеки libcurl и cpprestsdk

В современной разработке на C++ часто возникает необходимость интеграции с внешними сервисами, включая отправку SMS-сообщений. Несмотря на то, что стандартная библиотека C++ не предоставляет встроенных средств для работы с HTTP-запросами, существуют мощные сторонние библиотеки, которые решают эту задачу. В данной статье мы рассмотрим две популярные библиотеки — libcurl (CURL) и cpprestsdk (Casablanca) — и покажем, как с их помощью отправлять SMS через API популярных SMS-провайдеров.

Зачем нужна библиотека для отправки SMS на C++?

Отправка SMS через C++ — это типичная задача для серверных приложений, систем мониторинга, уведомлений или автоматизации. Прямая работа с сокетами и HTTP-протоколом в C++ сложна и подвержена ошибкам. Библиотеки, такие как libcurl и cpprestsdk, абстрагируют эту сложность, предоставляя удобный интерфейс для выполнения HTTP-запросов (GET, POST, PUT) и обработки ответов JSON/XML.

Мы будем использовать API SMS-провайдера (например, Twilio, SMS.ru или любого другого, поддерживающего REST API). В примерах ниже замените YOUR_API_KEY, YOUR_SENDER и YOUR_PHONE на свои реальные данные.

Библиотека 1: libcurl (CURL)

libcurl — это проверенная временем библиотека для работы с URL, поддерживающая множество протоколов (HTTP, HTTPS, FTP и др.). Она написана на C, но имеет отличные C++ биндинги. Для использования в C++ проекте достаточно подключить заголовочный файл curl/curl.h и линковаться с libcurl.

Установка libcurl

  • Linux (Ubuntu/Debian): sudo apt-get install libcurl4-openssl-dev
  • Windows: скачайте предварительно собранные бинарные файлы с официального сайта или используйте vcpkg: vcpkg install curl
  • macOS: brew install curl

Пример отправки SMS через libcurl (C++ синтаксис)

В этом примере мы используем простой POST-запрос с данными в формате JSON. Библиотека libcurl обрабатывает HTTP-заголовки и тело запроса.

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

// Функция обратного вызова для записи ответа сервера
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) {
    size_t totalSize = size * nmemb;
    output->append((char*)contents, totalSize);
    return totalSize;
}

bool sendSMS_via_libcurl(const std::string& phone, const std::string& message) {
    CURL* curl = curl_easy_init();
    if (!curl) return false;

    std::string response;
    std::string url = "https://api.sms-provider.com/v1/send"; // Замените на URL вашего провайдера
    std::string jsonData = R"({
        "api_key": "YOUR_API_KEY",
        "sender": "YOUR_SENDER",
        "phone": ")" + phone + R"(",
        "text": ")" + message + R"("
    })";

    struct curl_slist* headers = nullptr;
    headers = curl_slist_append(headers, "Content-Type: application/json");

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

    CURLcode res = curl_easy_perform(curl);
    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);

    if (res != CURLE_OK) {
        std::cerr << "Ошибка curl: " << curl_easy_strerror(res) << std::endl;
        return false;
    }

    std::cout << "Ответ сервера: " << response << std::endl;
    return true;
}

int main() {
    curl_global_init(CURL_GLOBAL_DEFAULT);
    sendSMS_via_libcurl("+79991234567", "Привет от C++ через libcurl!");
    curl_global_cleanup();
    return 0;
}

Библиотека 2: cpprestsdk (Casablanca)

cpprestsdk (ранее известная как Casablanca) — это современная асинхронная библиотека для C++, разработанная Microsoft. Она предоставляет удоб

Рекомендаций