问题标签 [boost-beast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9365 浏览

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

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

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

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

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

谷歌没有显示关于此的新示例,仅找到上述代码作为示例。

有人提示代码示例或使用 about the Beast ( roar )。或者我应该使用 websockets 吗?或者只有 boost::asio 喜欢在这里回答?

在此先感谢并原谅我的英语不好。

0 投票
2 回答
7813 浏览

c++ - 如何将 boost beast multi_buffer 转换为字符串?

我从 boost::beast 网站复制 websocket 示例并运行它 Websocket session 工作正常,但我不知道如何将接收到的 multi_buffer 转换为字符串。

下面的代码是 websocket 会话处理程序。

有没有办法将缓冲区转换为字符串?

0 投票
1 回答
3821 浏览

c++ - 如何使用 Beast C++ 库从 HTTP 重定向到 HTTPS?

我正在研究 Boost.Beast 库。我尝试提出一个请求,其响应是:

然后,我尝试使用此位置字段发出请求,但收到错误的请求响应。

我该如何进行重定向?有例子吗?

这是我的代码:

谢谢

0 投票
1 回答
972 浏览

c++ - 如何从响应中仅读取正文

我看到的阅读响应的示例如下所示。但这会打印出响应标头以及响应正文。Beast 是否公开了一种将身体作为字符串获取的方法?看起来可以访问res.body,但我不确定如何获取并转换它。

0 投票
1 回答
1206 浏览

c++ - 试图用 Boost::Beast 替换我的 libwebsocket 代码

我正在使用 libwebsockets 使用 C++ 程序连接到网络服务器。我能够连接。但是我如何在 Boost::Beast 中做到这一点

我试过了,但握手不起作用。删除握手会导致进一步的错误。这是直接来自 Boost::Beast 文档的简单 websocket 同步调用(为了简单和测试)片段。这里有没有办法,会有什么变化和语法?

但是当 libwebconnect 的代码被清除时,beast 在握手请求中给出了一个错误。连接通过。

此行显示:

错误:Websocket 升级握手失败。

是否需要进行其他一些设置才能使其正常工作?我发现同步和异步示例都遵循相同的初始设置,并且我都尝试过使用野兽示例。

10/15 更新:我决定更深入地研究 libwebsocket 所做的代码,这是我发现的,我希望这会有所帮助。

执行

0 投票
2 回答
1033 浏览

c++ - 如何在读/写文件的同时进行异步读/写 Beast websockets?

我有我的 C++ 程序,它分叉成两个进程,1(原始)和 2(分叉进程)。

在分叉的进程 (2) 中,它执行执行大量计算的程序 A。

原始进程 (1) 通过重定向到管道的标准输入和输出与该程序 A 通信。

我正在尝试在原始进程 (1) 中向我的代码添加 websocket 连接。我希望我的原始进程能够有效地选择或 epoll 是否有数据要从管道读取到程序 A,或者是否有数据要从 websocket 连接读取。

鉴于野兽 websocket 不是文件描述符,我该如何实现 select 或 epoll 的效果?

0 投票
1 回答
1257 浏览

c++ - 带有 Boost::Beast 的 SSL 隧道

我想连接到只允许 HTTP 连接的代理服务器,通过 HTTPS 与目标服务器通信。

代理服务器文档指出,唯一的方法是使用 HTTP Connect 动词(他们计划将直接 HTTPS 连接添加到代理服务器本身,但目前只允许 HTTP 连接)。

ssl_stream在我的 C++ 程序中,我在几个月内使用 's 成功连接并使用了目标服务器,使用boost::asiowithout boost::beast,但我现在想使用代理 usingboost::beast使事情变得更容易;所以,我现在如何使用 boost::asio 但我是boost::beast新手(我也不完全理解 SSL 的工作原理)。

我的想法是,在我的理解中,当你使用 a 时ssl_stream,你会加密整个通信,但是,我现在需要的是在 CONNECT HTTP 正文中插入加密的消息,我不知道该怎么做。

我读过这与lowest_layer/next_layer事物有关,但我不确定。

任何人都可以提供与代理服务器的完整读/写连接的示例吗?或至少进一步澄清?

0 投票
1 回答
798 浏览

c++ - Boost Beast:当内容长度不可用时,如何使用自定义正文生成非分块响应?

我正在尝试实现一个自定义主体类型,该类型将包含一个解析的 JSON 树对象。这项任务看起来很自然,但我找不到使用 Beast 生成携带 JSON 的非分块 HTTP 消息的方法。我有一个通过包装 libmicrohttpd 和 libcurl 实现的 REST 客户端/服务器,但我更愿意改用 Boost Beast。

据我了解,问题在于主体类型的size(value_type const&)方法接收到对要序列化的主体值的引用(在我的情况下是 JSON 树对象),但是没有实际的方法来确定字符串化 JSON 的确切长度把它串起来。但是,如果我删除该size()方法,Beast 会认为我要求的是分块传输编码。当然,分块编码本身并没有什么问题,但对我来说,这可能意味着修复一些自动化和监控脚本,更不用说集成测试了。

我想做的是为我正在准备的消息分配一个 JSON 对象,然后 Beast 询问作者,而不是询问body::size()有效负载的大小。这对我来说似乎是合乎逻辑的,因为实际的 HTTP 消息正文(序列化 JSON)与内存中的活动 JSON 对象完全不同,它是body::writer生成用于传输的正文字节。我错了吗?

无论如何,你认为有一个很好的方法来解决这个问题吗?

提前感谢您的时间和精力!

问候, 弗拉德

0 投票
1 回答
2543 浏览

c++ - 我如何从字符串而不是文件中做出 Boost Beast 回复

我正在尝试使用此示例代码 增强野兽高级服务器示例

它编译并且工作得很好。现在我想让它从给定的字符串中读取以回复 Get 或 Post 请求,而不是从文件中读取。

例如:客户端发送“www.xxxxxxxxxx.com/index.html”的Get请求 程序将从数据库而不是文件中获取的字符串回复请求。

我该怎么做?谢谢。

0 投票
1 回答
2099 浏览

c++ - 使用 boost::beast 异步处理流式 HTTP

我正在实现一个客户端,它访问一个 REST 端点,然后开始处理一个SSE 流并在事件发生时监视它们。为此,我将 Boost::Beast 版本 124 与 Boost 1.63 一起使用,并尝试使用async_read_some增量读取响应的正文。

到目前为止,这是我的代码:

我的问题是:

  1. 这是这个特定用例的正确方法吗?
  2. 是否有更合适的类型与response_parserand一起response使用http::string_body
  3. read_event调用处理程序时,它如何访问由 检索到的内容async_read_some?它应该从缓冲区中拉出来吗?