Sto tentando di accedere a un'API Web utilizzando una tecnica POST. Sono in grado di accedervi utilizzando una tecnica GET, ma i proprietari delle API mi dicono che certe funzionalità funzionano solo con POST. Sfortunatamente non riesco a far funzionare POST.Utilizzo di POST e urllib2 per accedere all'API Web
Ecco cosa funziona con 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)
Ecco cosa non funziona con POST (causa errore 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)
fa qualcosa saltare fuori a chiunque come intrinsecamente errato nel Codice POST? Non ho mai fatto una chiamata POST prima, ma tutto ciò che ho letto sembra suggerire che il mio codice è ragionevole. C'è un modo diverso in cui dovrei fare la cosa add_header per l'autorizzazione se sto usando POST?
Il tuo codice POST sembra essere esattamente uguale al tuo codice GET. Hai copiato e incollato qualcosa in modo errato? –
Doh! Sì, c'era un errore di incollatura. Risolto ora. – neomech