我正在尝试使用 Tornado 启动服务器并向其发布字符串。我找到了很多关于如何在处理程序类中编写 post 方法的示例,但没有关于如何编写 post 请求的示例。我当前的代码确实会导致 post 方法执行,但 get_argument 没有获取数据——它只是每次都打印默认的“未收到数据”。我究竟做错了什么?
我的代码如下所示:
class MainHandler(tornado.web.RequestHandler):
def post(self):
data = self.get_argument('body', 'No data received')
self.write(data)
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
def handle_request(response):
if response.error:
print "Error:", response.error
else:
print response.body
tornado.ioloop.IOLoop.instance().stop()
application.listen(8888)
test = "test data"
http_client = tornado.httpclient.AsyncHTTPClient()
http_client.fetch("http://0.0.0.0:8888", handle_request, method='POST', headers=None, body=test)
tornado.ioloop.IOLoop.instance().start()
将我要发送的字符串放入“body”参数中是正确的做法吗?在我见过的一些示例中,例如这里,似乎人们创建了自己的参数,但是如果我尝试向请求中添加新参数,例如
http_client.fetch("http://0.0.0.0:8888", handle_request, method='POST', headers=None, data=test)
我只是收到一条错误消息“TypeError: init () got an unexpected keyword argument 'data'”
谢谢!