Я должен использовать библиотеку C ++ для отправки данных в REST-Webservice нашей компании.
Я начинаю с Boost и зверь и с приведенным примером Вот под Code :: Blocks в среде Ubuntu 16.04.
Документация не помогла мне решить следующую проблему:
Мой код более или менее равен примеру, и я могу успешно скомпилировать и отправить GET-запрос в мой тестовый веб-сервис.
Но как я могу установить данные внутри запроса (req) из этого определения:
:
beast::http::request<beast::http::string_body> req;
req.method("GET");
req.target("/");
:
Я пытался использовать некоторые req.body.???
, но завершение кода не дает мне подсказку о функциональности (кстати, не работает). я знаю это req.method
необходимо изменить на «POST» для отправки данных.
Google не показывает новый пример по этому поводу, только приведенный выше код найден в качестве примера.
Кто-то с намеком на пример кода или используя про Зверя (рев). Или я должен использовать веб-сокеты? Или только boost :: asio вроде ответил Вот?
Заранее спасибо и извините за мой плохой английский.
Для отправки данных по вашему запросу вам необходимо заполнить тело и указать тип контента.
beast::http::request<beast::http::string_body> req;
req.method(beast::http::verb::post);
req.target("/");
Если вы хотите отправить «ключ = значение» в виде пары «x-www-form-urlencoded»:
req.set(beast::http::field::content_type, "application/x-www-form-urlencoded");
req.body() = "name=foo";
Или необработанные данные:
req.set(beast::http::field::content_type, "text/plain");
req.body() = "Some raw data";
Небольшое дополнение к ответу Элиота Париса:
Правильный синтаксис для установки тела
req.body() = "name=foo";
Вы должны добавить
req.prepare_payload();
после установки тела, чтобы установить размер тела в заголовках HTTP.