如标题所述,我想使用 AsyncHTTPclient 的 fetch() 方法进行异步 GET 请求。
但是,我不知道在哪里提供查询参数。
所以,说我想提出请求
http://xyz.com?a=1&b=2
我在哪里给a
和b
?执行此操作的唯一方法是将参数附加到 URL。具体来说,有没有办法传递一个字典,然后由 Tornado 框架附加到 URL。
如标题所述,我想使用 AsyncHTTPclient 的 fetch() 方法进行异步 GET 请求。
但是,我不知道在哪里提供查询参数。
所以,说我想提出请求
http://xyz.com?a=1&b=2
我在哪里给a
和b
?执行此操作的唯一方法是将参数附加到 URL。具体来说,有没有办法传递一个字典,然后由 Tornado 框架附加到 URL。
from tornado.httputil import url_concat
params = {"a": 1, "b": 2}
url = url_concat("http://example.com/", params)
http_client = AsyncHTTPClient()
http_client.fetch(url, request_callback_handler)
您也可以使用 tornado HTTPRequest 来制作请求对象,然后您可以使用带有请求对象的 httpclient 作为获取中的参数。
HTTPRequest 的代码示例
import tornado.httpclient
import urllib
url = 'http://example.com/'
body = urllib.urlencode({'a': 1, 'b': 2})
req = tornado.httpclient.HTTPRequest(url, 'GET', body=body)
# I have used synchronous one (you can use async one with callback)
client = tornado.httpclient.HTTPClient()
res = client.fetch(req)
您可以简单地将它们包含在 URL 中:
def handle_request(response):
if response.error:
print "Error:", response.error
else:
print response.body
http_client = AsyncHTTPClient()
http_client.fetch("http://www.google.com/?q=tornado", handle_request)
通过文档引用然后tornado.httpclient.HTTPRequest
对象不提供任何接口来提供参数化变量集以构建可以附加到 URL 的查询字符串。