Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

python requests not recognizing params

I am requesting to mindbodyapi to get token with the following code using requests library

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')

gives a response as follows

{"Error":{"Message":"Missing API key","Code":"DeniedAccess"}}

But if I request the following way it works, anybody could tell me, what I am doing wrong on the above code.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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"))

>Solution :

In the second one, you are passing the API Key in headers and the credentials in the body of the request. In the first, you are sending both the API Key and credentials together in the query string, not the request body. Refer to requests.request() docs

Just use two dictionaries like in your second code and the correct keywords, I think it should work:

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')
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading