Tornado を使用してサーバーを起動し、文字列を投稿しようとしています。ハンドラー クラスでポスト メソッドを記述する方法の例はたくさん見つかりましたが、ポスト リクエストを記述する方法の例はありません。私の現在のコードでは post メソッドが実行されますが、get_argument はデータを取得していません。毎回デフォルトの「No data received」を出力するだけです。私は何を間違っていますか?
私のコードは次のようになります。
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のように、私が見たいくつかの例では、人々が独自のパラメーターを作成しているように見えますが、リクエストに新しいパラメーターを追加しようとすると、
http_client.fetch("http://0.0.0.0:8888", handle_request, method='POST', headers=None, data=test)
「TypeError: init () が予期しないキーワード引数 'data'を取得しました」というエラーが表示されます。
ありがとう!