Я пытаюсь получить доступ к веб-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?