首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Tornado中使用POST方法?

如何在Tornado中使用POST方法?
EN

Stack Overflow用户
提问于 2012-04-29 06:10:19
回答 1查看 43.8K关注 0票数 22

我正在尝试使用Tornado启动一个服务器并向其发送一个字符串。我发现了许多关于如何在处理程序类中编写post方法的示例,但没有关于如何编写post请求的示例。我的当前代码确实导致了post方法的执行,但是get_argument并没有获得数据--它每次都只打印默认的"No data received“。我做错了什么?

我的代码如下所示:

代码语言:javascript
复制
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“参数中是正确的做法吗?在我见过的一些示例中,比如here,似乎人们创建了他们自己的参数,但是如果我尝试向请求添加一个新参数,比如

代码语言:javascript
复制
http_client.fetch("http://0.0.0.0:8888", handle_request, method='POST', headers=None, data=test)

我刚收到一个错误,说"TypeError:init() get A unexpected argument 'data'“

谢谢!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10367981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档