Используя tornado.httpclient.AsyncHTTPClient.fetch(), чтобы сделать запрос GET вместе с параметрами - программирование
Подтвердить что ты не робот

Используя tornado.httpclient.AsyncHTTPClient.fetch(), чтобы сделать запрос GET вместе с параметрами

Как упоминалось в заголовке, я хочу сделать асинхронный запрос GET с помощью метода fetch() AsyncHTTPclient.

Но я не могу понять, где указать параметры запроса.

Итак, скажем, я хочу сделать запрос

http://xyz.com?a=1&b=2

где я могу дать a и b? Единственный способ сделать это - добавить параметры к URL. В частности, есть ли способ передать Dict, который затем добавляется к URL-адресу с помощью инфраструктуры Tornado.

4b9b3361

Ответ 1

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)

Ответ 2

Вы также можете использовать tornado HTTPRequest для создания объекта запроса, а затем вы можете использовать httpclient с объектом запроса в качестве параметра в выборке.

Ссылка для протокола Tornado HTTPRequest

Пример кода для 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)

Ответ 3

Вы можете просто включить их в 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.