Запросы python не распознают параметры
Я запрашиваю mindbodyapi для получения токена с помощью следующего кода, используя библиотеку requests
def get_staff_token(request):
URL = "https://api.mindbodyonline.com/public/v6/usertoken/issue"
payload = {
'Api-Key': API_KEY,
'SiteId': "1111111",
'Username': 'user@xyz.com',
'Password': 'xxxxxxxx',
}
r = requests.post(url=URL, params=payload)
print(r.text)
return HttpResponse('Done')
дает ответ следующим образом
{"Error":{"Message":"Missing API key","Code":"DeniedAccess"}}
Но если я запрошу следующий способ, он работает, кто-нибудь может сказать мне, что я делаю неправильно в приведенном выше коде.
conn = http.client.HTTPSConnection("api.mindbodyonline.com")
payload = "{\r\n\t\"Username\": \"username\",\r\n\t\"Password\": \"xxxxx\"\r\n}"
headers = {
'Content-Type': "application/json",
'Api-Key': API_KEY,
'SiteId': site_id,
}
conn.request("POST", "/public/v6/usertoken/issue", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Во втором случае вы передаете API Key в заголовках, а учетные данные - в теле запроса. В первом случае вы передаете и API Key, и учетные данные вместе в строке запроса, а не в теле запроса. См. requests.request()
docs
Просто используйте два словаря, как в вашем втором коде, и правильные ключевые слова, я думаю, это должно сработать:
def get_staff_token(request):
URL = "https://api.mindbodyonline.com/public/v6/usertoken/issue"
payload = {
'Username': 'user@xyz.com',
'Password': 'xxxxxxxx',
}
headers = {
'Content-Type': "application/json",
'Api-Key': API_KEY,
'SiteId': "1111111",
}
r = requests.post(url=URL, data=payload, headers=headers)
print(r.text)
return HttpResponse('Done')