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

标签 c++ rest boost boost-beast

我必须使用 C++ 库将数据发送到我们公司的 REST-Web 服务。 我从 Boost 和 Beast 开始和给出的例子 here在 Ubuntu 16.04 环境中的 Code::Blocks 下。 该文档没有帮助我解决以下问题:

我的代码或多或少与示例相同,我可以成功编译并向我的测试网络服务发送 GET 请求。

但是我怎样才能在这个定义的请求(req)中设置数据:

:
beast::http::request<beast::http::string_body> req;
req.method("GET");
req.target("/");
:

我尝试使用一些 req.body.???,但代码完成并没有给我关于功能的提示(顺便说一句。不工作)。我知道 req.method 必须改为“POST”才能发送数据。

谷歌没有给出新的例子,只找到上面的代码作为例子。

有人提示代码示例或使用关于野兽 (roar)。或者我应该使用 websockets 吗?或者只有 boost::asio 喜欢回答 here ?

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

最佳答案

对 Eliott Paris 的回答的小补充:

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

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

    req.prepare_payload();
    

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

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

相关文章:

android - 从android中的外部文件获取Web服务uri

web-services - 我的网络服务是 RESTFUL 的吗?

c++ - 安装 Boost 到自定义目录

c++ - 在构造函数中进行错误处理而不会失败

c++ - 二进制搜索树叶子计数问题

c++ - 尝试控制Philips Hue Lights时,未从桥接器获得任何响应

c++ - C++ 11中线程的延迟启动

rest - OpenAPI 中标签的确切用途以及它们为何独一无二

c++ - Boost::asio::async_read() 缓冲区损坏问题

c++ - Boost fusion 使用 lambda fold 参数包