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

时间:2014-10-13 20:07:29

标签: c++ boost json-rpc

如果我编写的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对象相对应的字节。

1 个答案:

答案 0 :(得分:0)

经过一些调试后,我发现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请求的某些部分。