Я пытаюсь получить доступ к веб-API, используя технику POST. Я могу получить к нему доступ, используя технику GET, но владельцы API говорят мне, что некоторые функции работают только с POST К сожалению, я не могу заставить работать POST.
Вот что работает с 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)
Вот что НЕ работает с POST (вызывает ошибку 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)
Вызывает ли кто-нибудь что-нибудь неверное в коде POST? Я никогда не делал POST-вызовы раньше, но все, что я прочитал, говорит о том, что мой код разумен Есть ли другой способ, которым я должен делать add_header для авторизации, если я использую POST?