【问题标题】:Tornado analyse requestsTornado 分析请求
【发布时间】:2018-12-19 22:13:03
【问题描述】:

通过龙卷风,我希望能够全面分析网络请求。

这是请求

curl -vk _POST http://127.0.0.1:3000 -H "Content-Type: application/x-www-form-urlencoded" --data "testObject=20"

使用该代码

import time, threading
import tornado.ioloop
import tornado.web
import sys

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        print('get message:')
        print(str(self.request.body))
        self.write(self.request.body)

    def post(self):
        print('post message')
        print(str(self.request.body))
        self.write(self.request.body)

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

def startTornado():
    app = make_app()
    app.listen(my_port)
    tornado.ioloop.IOLoop.instance().start()

def stopTornado():
    tornado.ioloop.IOLoop.instance().stop()

if __name__ == "__main__":
    my_port = 3000
    print('app is listening on port',str(my_port))
    t = threading.Thread(target=startTornado)
    t.start()
    while True:
        try:
            time.sleep(0.01)
        # signal : CTRL + BREAK on windows or CTRL + C on linux
        except KeyboardInterrupt:
            stopTornado()
            t.join()
            sys.exit()

我明白了

b'testObject=20'

为了能够正确地对编码、内容类型、数据等做出反应。我如何使用 tornado 呢? python中还有什么我可以使用的吗?

【问题讨论】:

    标签: python tornado


    【解决方案1】:

    在龙卷风中request.body 始终是原始身体数据。表单编码的数据被解析为arguments 结构,通常使用self.get_argument('testObject') 等方法访问。

    【讨论】:

    • 好的,谢谢。没有像 self.arguments 这样的东西吗? self.request 会错过网络通话中的任何内容吗?
    • 这有点不一致,但您可以通过self.request.arguments 访问所有参数,或通过self.get_argument 访问单个参数。还有其他变化;有关详细信息,请参阅文档。
    • 我不得不承认我有时会迷失在龙卷风文档中。如果你愿意,你能给我指出正确的道路吗
    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2013-11-12
    • 2013-06-12
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2018-04-26
    • 2012-10-14
    相关资源
    最近更新 更多