人。我不能用Tornado获取原始身体数据。我请求
curl -i localhost:8888 -d '{"a":12}'
并期望在request.body中获取字符串'{"a":12}'
,但收到'{a:12}'
。
源代码:
import tornado.web
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):
def post(self):
self.write(self.request.body)
if __name__ == "__main__":
app = tornado.web.Application({
(r"/", MainHandler)
})
app.listen(3000)
tornado.ioloop.IOLoop.instance().start()
卷曲结果:
$ curl 127.0.0.1:3000 -i -d {"a":12}
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: TornadoServer/4.0.2
Content-Length: 6
Date: Thu, 22 Jan 2015 14:00:19 GMT
{a:12}
Python版本为3.4.2,Tornado版本为4.0.2
答案 0 :(得分:3)
这是一个shell引用问题:shell正在删除命令curl 127.0.0.1:3000 -i -d {"a":12}
中的引号。如果你将论点引用到-d
(你在问题正文中做了curl -i localhost:8888 -d '{"a":12}'
),你应该得到你期望的结果。
答案 1 :(得分:2)
使用self.request.connection.stream.read_bytes
直接读取数据流。