2011-03-17 5 views
4

J'essaie de faire une requête GET pour une API REST en utilisant PycURL. Je suis en mesure de réussir une demande si je ne transmets aucun paramètre. Je suis également en mesure de faire une requête POST en procédant comme suit:Comment définir les paramètres GET avec PyCurl?

curl.setopt (pycurl.POSTFIELDS, post_data)

Je veux faire une demande get qui comprend des paramètres de connexion. Si j'essaie d'utiliser la ligne ci-dessus pour passer les paramètres, il essaie de faire un POST à ​​la place. Je ne peux pas comprendre comment définir les paramètres de connexion et faire une demande GET.

Toute aide serait appréciée.

Répondre

1

Il semble y avoir aucune option pycurl.GETFIELDS, de sorte que vous devrez passer ces paramètres dans l'URL, comme ceci:

http://your_url/some_path?param1=value1&param2=value2 

où vous devez remplacer param1, param2, valeur1 et valeur2 avec selon valeurs que vous avez stockées dans post_data.

11

Tout comme une URL normale sur le navigateur, les paramètres GET sont codés et ajoutés après un ? à l'URL. En utilisant urllib.urlencode de python, vous pouvez faire:

import urllib 
import pycurl 

url = 'http://www.google.com/search' 
params = {'q': 'stackoverflow answers'} 

c = pycurl.Curl() 
c.setopt(c.URL, url + '?' + urllib.urlencode(params)) 
... # and so on and so forth ... 
+0

En plus de cette réponse, vous pouvez ajouter l'option HttpGet. c.setopt (pycurl.HTTPGET, 1) – Vyke

+0

Vous devrez peut-être importer urllib.parse puis urllib.parse.urlencode (params) en python 3 –

+0

Heureux de mettre à jour cette réponse pour supporter python3 –

Questions connexes