Как преобразовать этот Curl HTTP в Arduino C ++? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую этот простой пример кода ArduinoHttpClient для отправки образца POST-запроса с моего Arduino Uno WiFi Rev2 на общедоступный URL-адрес. Оно работает. Я получаю git ответ.

Но теперь я хочу отправить HTTP-запрос из моего кода Arduino, который имитирует этот вызов curl, чтобы отправить электронное письмо через MailGun :

curl \
--request POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--user 'api:XXXXXXXXXXXXXXXXXXXXX' \
--data-urlencode from='Mailgun Sandbox <postmaster@sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org>' \
--data-urlencode to='Me <myemail@gmail.com>' \
--data-urlencode subject='Hello World1' \
--data-urlencode text='Hello World2' \
"https://api.mailgun.net/v3/sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org/messages"

Как я могу это сделать? Когда я перехватил этот вызов curl с помощью прокси-сервера, я вижу, что он отправляет следующие байты:

POST https://api.mailgun.net/v3/sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org/messages HTTP/1.1
Host: api.mailgun.net
Authorization: Basic YYYYYYYYYYYYYYY
User-Agent: curl/7.54.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 183
from=Mailgun%20Sandbox%20%3Cpostmaster%40sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org%3E&to=Me%20%3Cmyemail%40gmail.com%3E&subject=Hello%20World1&text=Hello%20World2

Трудно воссоздать это в C ++. Как определяется токен Authorization? Должен быть идиоматический / хорошо известный способ сделать это.

На сайте Mailgun приведены примеры фрагментов из нескольких языков, но не C / C ++. Они сказали мне сегодня они не предлагают фрагменты кода для C / C ++.

enter image description here]

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Это разрешение выглядит как basi c auth . Так что это пользователь в кодировке base64: пароль

Если вы хотите проверить, попробуйте декодировать строку base64 и посмотрите. Нет необходимости говорить, что это делает его совершенно непригодным для использования по HTTP, поскольку он будет отправлять ваш пароль в виде открытого текста.

0 голосов
/ 14 апреля 2020

Вы можете просто вызвать команду curl из c ++ с помощью функции system (). Пример:

system("
   curl \
   --request POST \
   --header 'Content-Type: application/x-www-form-urlencoded' \
   --user 'api:XXXXXXXXXXXXXXXXXXXXX' \
   --data-urlencode from='Mailgun Sandbox 
   <postmaster@sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org>' \
   --data-urlencode to='Me <myemail@gmail.com>' \
   --data-urlencode subject='Hello World1' \
   --data-urlencode text='Hello World2' \
 "https://api.mailgun.net/v3/sandbox7d1aaf2f157f42d8844b1ac4c38a0ef7.mailgun.org/messages"
");

Затем вы можете заменить 'XXXXXXXXXXXXX' токеном, который вы получите от mailgun, зарегистрировавшись.

Как видите, вы можете получить свой ключ от своего Панель инструментов, как только вы зарегистрируетесь. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...