Tornado中利用HttpClient发送POST

话说在Tornado中提供了一套HttpClient的东西。里头有“HttpClient”这个阻塞的HTTP客户端和一个叫做AsyncHttpClient的非阻塞的东西。这俩东西类似,怎么用大家自己谷歌吧。

这里说的是怎么利用这个工具发送POST表单。例如有这么个东西

http_client = tornado.httpclient.HTTPClient()  
response = http_client.fetch("http://localhost:8888", method='POST')  

如果直接运行上面的代码会遇到一个AssertionError,是因为既然是POST,就需要POST数据过去。但是上面的链接里头明显没有指明要POST啥数据。查阅资料后得知: POST方法的数据应该放在fetch参数中的body中传递到url。解决方案如下:

import urllib  
data = { 'data': '数据放这里' } #放置数据的dict  
body = urllib.urlencode(data) #利用urllib将数据编码成url格式  
response = http_client.fetch("http://localhost:8888", method='POST', body=body) #发送,搞定  

然后就行了……

Friskit

继续阅读此作者的更多文章