0
私はTornado 4.2を使用しており、POSTリクエストでxmlデータを送信する必要があります。私はそれが期待通りに働いてrequests
ライブラリを使用する場合:AsyncHTTPClientを使用すると、トルネードはxmlデータをどのようにポストしますか?
r = requests.post(url, headers=headers, data=send_xml, verify=False)
prepay_result_dic = cls.trans_xml_to_dict(r.content)
にはどうすればtornado.httpclient.AsyncHTTPClient
と同じ機能を達成することができますか?私が試した:
@tornado.gen.coroutine
def post_async_url(url, payload={}, headers={}):
'''
post url,to replace the requests lib...
:param url: "http://www.google.com/"
:param payload: {'userId': user_id}
:return: response.body
'''
import urllib
http_client = tornado.httpclient.AsyncHTTPClient()
payload = urllib.urlencode(payload)
response = yield tornado.gen.Task(http_client.fetch, url, method="POST", headers=headers, body=payload, validate_cert=False)
raise tornado.gen.Return(response.body)
しかし、上記のコードでエラーが発生します:
TypeError: not a valid non-string sequence or mapping object
uが '私は 'ペイロード= urllib.urlencode(ペイロード)を削除するとき、それは動作します...右rを – ouyangbro