2013-06-25 3 views
14

के साथ जीईटी अनुरोध करने के लिए tornado.httpclient.AsyncHTTPClient.fetch() का उपयोग करना शीर्षक के अनुसार, मैं AsyncHTTPclient की fetch() विधि का उपयोग करके एक एसिंक्रोनस GET अनुरोध करना चाहता हूं।पैरामीटर

लेकिन, मैं यह नहीं समझ सकता कि क्वेरी पैरामीटर कहां देना है।

तो, कहते हैं कि मैं अनुरोध बनाना चाहते

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

जहाँ मैं a और b देते हैं? ऐसा करने का एकमात्र तरीका यूआरएल में पैरामीटर जोड़ना है। विशेष रूप से, क्या डिक्ट को पास करने का कोई तरीका है जो तब टोरनाडो ढांचे द्वारा यूआरएल में जोड़ा जाता है।

उत्तर

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 में शामिल कर सकते हैं:

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) 

documentation के माध्यम से reffering तो tornado.httpclient.HTTPRequest वस्तु एक क्वेरी स्ट्रिंग कि URL में संलग्न किया जा सकता है के निर्माण के लिए पैरामिट्रीकृत चर सेट की आपूर्ति के लिए किसी भी इंटरफेस प्रदान नहीं करता है।

+0

Link for tornado HTTPRequest doc

कोड का नमूना हाँ, यह सच है। लेकिन अधिकांश ढांचे शब्दकोशों को पारित करने का एक तरीका प्रदान करते हैं जिन्हें यूआरएल में जोड़ा जाता है। बस जानना चाहता था कि टोरनाडो की ऐसी सुविधा थी – Hashken

4

आप बवंडर 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) 
+0

मुझे लगता है कि 'body' कीवर्ड का उपयोग' GET' विधि के साथ नहीं किया जा सकता है, बस टर्ननाडो (4.1) में आज़माएं। – zhkzyth

+0

पायथन 3 urlencode में 'urllib.parse' में स्थानांतरित हो गया है। उदा। कोशिश करें: 'urllib.parse.urlencode ({' a ': 123}) ' –