如何使用boost::socket读取POST(JSON RPC)数据

How to read POST (JSON RPC) data with boost::socket?

本文关键字:RPC JSON 数据 读取 何使用 boost socket POST      更新时间:2023-10-16

如果我编写了一个HTTP服务器,它正在侦听某个地址上的请求,并且它收到了来自的请求

curl --data-binary '{"method": "sum", "params": {"a":"3", "b":"4"}, "id":"0", "jsonrpc": "2.0"}' http://localhost:12345

现在,如果我的服务器拥有一个boost::socket来从其侦听的端口读取,它如何获得传递的JSON对象?

我发现async_read_some()没有读取JSON对象对应的字节。

经过一点调试,我发现async_read_some()确实也提取了这样的JSON RPC信息(基本上是整个HTTP请求字符串)。

具体的HTTP规范如下所示:http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5

整个HTTP请求以字节序列的形式出现,其中JSON RPC部分需要在JSON解析器的帮助下进行解析。

至于我做错了什么,我传递给async_read_some()的缓冲区不够大,并且没有得到HTTP请求的某些部分。