Tôi đang cố truy cập API web bằng kỹ thuật POST. Tôi có thể truy cập nó bằng cách sử dụng kỹ thuật GET, nhưng chủ sở hữu API cho tôi biết rằng một số chức năng nhất định chỉ hoạt động với POST. Thật không may tôi dường như không thể nhận được POST làm việc.Sử dụng POST và urllib2 để truy cập API web
Đây là những gì làm việc với 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)
Đây là những gì không làm việc với POST (gây HTTP 400 lỗi):
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)
Liệu bất cứ điều gì nhảy ra ở bất cứ ai như là vốn đã không chính xác trong POST code? Tôi chưa bao giờ thực hiện một cuộc gọi POST trước đây nhưng mọi thứ tôi đã đọc dường như gợi ý rằng mã của tôi là hợp lý. Có một số cách khác nhau tôi phải làm điều add_header cho phép nếu tôi đang sử dụng POST?
Mã POST của bạn dường như giống hệt mã GET của bạn. Bạn đã sao chép và dán một cái gì đó không chính xác? –
Doh! Có, đã xảy ra lỗi khi dán. Đã sửa lỗi. – neomech