QNetworkAccessManager: Простые POST-запросы в Qt

QNetworkAccessManager

Допустим, нам понадобилось отправлять Email-сообщения из Qt-приложения. Одним из наиболее простых способов является использование стороннего сервиса, основанного на REST API. Без умения отправки POST-запросов не обойтись. В этом нам поможет QNetworkAccessManager.

В качестве сервиса Email-рассылки выберем Mailgun. Для простейшей демонстрации нам вполне хватит его режима Sandbox. Для этого необходимо пройти базовую регистрацию и подтвердить регистрационный Email.

Чтобы полноценно пользоваться Mailgun, требуется подтверждение по смс и регистрация домена, поэтому ограничимся демо-режимом сервиса, который бесплатно позволяет отправлять Email-сообщения на наш собственный адрес (указанный при регистрации).

От Mailgun нас интересует три параметра:

  1. API-ключ вида key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
  2. URL сервиса вида https://api.mailgun.net/v3/sandboxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org/messages;
  3. Sandbox-отправитель вида Mailgun Sandbox <postmaster@sandboxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org> для заполнения пункта от.

На сайте Mailgun приводится пример вызова сервиса с помощью curl:

Таким образом, нам достаточно реализовать эквивалент этого POST-запроса в коде Qt-приложения.

Реализация

Заголовочный файл mainwidget.h:

Здесь мы заготовили два слота: onSend() для обработки нажатия на кнопку отправки; и onResponse() для принятия ответа сервера (ответ в текстовом виде мы просто выведем в диалоговом окне). Также мы объявили поля m_manager и m_settings. Первое поле будет отвечать за всю работу по сетевому взаимодействию, а второе поможет сохранять ключевые параметры сервиса, чтобы их не пришлось вводить заново при каждом запуске программы.

Содержимое файла mainwidget.cpp:

Интерес представляет следующий фрагмент:

Для инициализации запроса мы заполняем URL сервиса, данные авторизации (обратите внимание, что они кодируются в base64) и тип содержимого. Далее заполняются входные параметры сервиса from, to, subject и text. Окончательно, m_manager отправляет все это на сервер с помощью вызова post().

Теперь достаточно заполнить все поля и нажать кнопку Отправить. Если все сделано правильно, то вы увидите диалоговое окно с ответом сервиса (в формате JSON), в котором говорится об успехе операции. Буквально сразу же на ваш адрес электронной почты поступит новое сообщение с указанной темой и содержимым.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий