J'essaie d'accéder à une API Web à l'aide d'une technique POST. Je suis capable d'y accéder en utilisant une technique GET, mais les propriétaires d'API me disent que certaines fonctionnalités ne fonctionnent qu'avec POST. Malheureusement, je n'arrive pas à faire fonctionner le POST.Utilisation de POST et d'urllib2 pour accéder à l'API Web
est ici ce qui fonctionne avec GET:
API_URL = "http://example.com/api/"
def call_api(method, **kwargs):
url = API_URL + method
if kwargs:
url += '?' + urllib.urlencode(kwargs)
req = urllib2.Request(url)
auth = 'Basic ' + base64.urlsafe_b64encode("%s:%s" % (USER, PASS))
req.add_header('Authorization', auth)
return urllib2.urlopen(req)
Voici ce qui ne fonctionne pas avec POST (provoque une erreur HTTP 400):
API_URL = "http://example.com/api/"
def call_api(method, **kwargs):
url = API_URL + method
data=''
if kwargs:
data=urllib.urlencode(kwargs)
req = urllib2.Request(url, data)
auth = 'Basic ' + base64.urlsafe_b64encode("%s:%s" % (USER, PASS))
req.add_header('Authorization', auth)
return urllib2.urlopen(req)
ne fait rien sauter à tout le monde comme étant intrinsèquement incorrect dans le Code POST? Je n'ai jamais fait un appel POST avant, mais tout ce que j'ai lu semble suggérer que mon code est raisonnable. Existe-t-il une façon différente que je suis censé faire la chose add_header pour l'autorisation si j'utilise POST?
Votre code POST semble être exactement le même que votre code GET. Avez-vous copié et collé quelque chose de façon incorrecte? –
Doh! Oui, il y a eu une erreur de collage. Fixé maintenant – neomech