Используя торнадо.с помощью HttpClient.AsyncHTTPClient.fetch (), чтобы сделать запрос GET вместе с параметрами
как упоминалось в заголовке, я хочу сделать асинхронный запрос GET, используя метод fetch () AsyncHTTPclient.
но я не могу понять, где дать параметры запроса.
скажем, я хочу сделать запрос
http://xyz.com?a=1&b=2
где я даю a
и b
? Единственный способ сделать это-добавить параметры к URL-адресу. В частности, есть ли способ передать Dict, который затем добавляется к URL-адресу База "торнадо".
3 ответов
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 с объектом запроса в качестве параметра в выборке.
Ссылка для tornado HTTPRequest doc
пример кода для 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)
Reffering через документация затем tornado.httpclient.HTTPRequest
объект не предоставляет интерфейсов для предоставления параметризованного набора переменных для построения строки запроса, которая может быть добавлена к URL.