2

tornado httpclientでPUTリクエストを実行する方法はありますか?

たとえばurllibRequests Libraryに置き換える方法はありますか?

または、独自のクライアントをサブクラス化し、この回答から構築を挿入することもできます。

import urllib2
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request('http://example.org', data='your_put_data')
request.add_header('Content-Type', 'your/contenttype')
request.get_method = lambda: 'PUT'
url = opener.open(request)

痛みのないパッチ、ハック、提案..

この構造が適切に機能するようにします。

 response = yield gen.Task(http_client.fetch, opt.site_url + '/api/user/', method="PUT", body=urlencode(pdata))

今のところ、本体は送信されていません。

4

1 に答える 1

6

いいえ、Tornado は urllib を使用しません (おそらくブロックします)。基本的な GET よりも複雑なものに httpclient を使用する秘訣は、HTTPRequestを作成することです。

テストされていませんが、動作するはずです:

from tornado.httpclient import HTTPRequest
request = HTTPRequest(opt.site_url + '/api/user/', method="PUT", body=urlencode(pdata))
response = yield gen.Task(http_client.fetch, request)
于 2012-09-22T07:25:03.043 に答える