2013-06-25 12 views
14

タイトルに記載されているとおり、AsyncHTTPクライアントのfetch()メソッドを使用して非同期GETリクエストを作成します。tornado.httpclient.AsyncHTTPClient.fetch()を使用してパラメータと一緒にGETリクエストを作成する

ただし、クエリパラメータをどこに与えるかわかりません。

ので、私は私がaを与え、bん要求

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

を作りたいと言いますか?これを行う唯一の方法は、URLにパラメータを追加することです。具体的には、Dictを渡す方法があります.Dictは、TornadoフレームワークによってURLに追加されます。

答えて

22
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) 
+0

@カーティク:私は、トルネードがそれ自身の機能を持っていることを知りました。 – vartec

3

あなたは、単にURLに含めることができます。

documentationを通じてReffering
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に付加することができ、クエリ文字列を構築するためのパラメータ化された変数セットを供給するために任意のインターフェースを提供していません。

+0

用のコードのサンプルええ、それは本当です。しかし、ほとんどのフレームワークは、URLに追加される辞書を渡す方法を提供します。ちょうどトルネードがそのような施設を持っていたかどうかを知りたかったのです – Hashken

4

また、tornado HTTPRequestを使用してリクエストオブジェクトを作成し、リクエストオブジェクトとともにHTTPClientをフェッチでパラメータとして使用できます。

Link for 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) 
+0

'body'キーワードは' GET'メソッドと一緒に使うことはできないと思います。トルネードで試してみてください(4.1)。 – zhkzyth

+0

python3でurlencodeが 'urllib.parse'に移動しました。例: 'urllib.parse.urlencode({'a':123})' –

関連する問題