C++ 使用 Boost.asio 和 Beast 库在正文中发送数据

标签 c++ rest boost boost-beast

我必须使用 C++ 库将数据发送到我们公司的 REST-Web 服务。 我从 Boost 和 Beast 开始并以给出的例子here在 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”才能发送数据。

谷歌没有展示关于这个的新例子,只找到上面的代码作为例子。

有人提示代码示例或使用关于野兽(咆哮)。还是我应该使用 websockets?或者像回答 here 那样的 boost::asio ?

提前致谢,请原谅我的英语不好。

最佳答案

Eliott Paris 回答的小补充:

  1. 设置正文的正确语法是

    req.body() = "name=foo";
    
  2. 你应该添加

    req.prepare_payload();
    

    在设置正文后在 HTTP header 中设置正文大小。

关于C++ 使用 Boost.asio 和 Beast 库在正文中发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331292/

相关文章:

c++ - 无法使用 boost enable_if 匹配模板方法

c++ - 使用 fmtlib,当值为负时,零填充数值更短,我可以调整这种行为吗?

c# - 为什么函数需要在定义或使用之前声明?

asp.net-mvc-2 - 将/action/1,2,3 绑定(bind)到List<int>

c++ - VS2013 中的高分辨率时钟

c++ - 在不阻塞/等待主操作的情况下启动新线程

c++ - 将模板生成的类分配给具有相同布局的 C 结构

c++ - Linux 中的磁盘空间使用情况分析

spring - 如何在 spring boot 中从同一个应用程序调用另一个 api

php - 可以一起使用 Zend_Http_Client() 和 Zend_Rest_Client()