0
我使用Tornado 4.2,我需要发送POST请求的XML数据。如果我使用requests
库它按预期工作:使用AsyncHTTPClient时,tornado如何发布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
对不对......当我删除 'payload = urllib.urlencode(payload)'时, – ouyangbro