如果我编写的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对象相对应的字节。
答案 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请求的某些部分。