Request body has invalid json format - Python

17,582

data should be a dict or list, not a string (which the dumps) returns.

r = requests.post(myurl, json=payload, headers=headers)

See the documentation. Also, you should use None instead of null in your payload.

Share:
17,582
DeathJack
Author by

DeathJack

Coder

Updated on June 28, 2022

Comments

  • DeathJack
    DeathJack almost 2 years

    I'm trying to post JSON data (RESTful API) using python.

        null = none
        payload = {
        "priority": 1,
        "hello_id": 207,
        "bye_id": 207,
        "s1": 1,
        "s2": 2,
        "sub": "CHECK 123",
        "t1": "Leave",
        "product_id": null,
        "due": "2001-01-01T06:11:54.884Z",
        "tags": [
        "HelloTag"
        ]
        }
    
        headers = {'content-type': 'application/json'}
        r = requests.post(myurl, data=json.dumps(payload), headers=headers)
        (OR)
        r = requests.post(myurl, json = json.dumps(payload_post), headers=headers)
        (OR)
        r = requests.post(myurl, data = payload_post, headers=headers, auth=(username_accadmin, password_accadmin))
        (OR)
        r = requests.post(myurl, json=payload, headers=headers)
    

    None of the above 3 lines seems to yield the expected response (or) the response that I get in Postman.

        In the response I get : 
        "Validation failed","errors":[{"field":"priority","message":"Unexpected/invalid field in request","code":"invalid_field"}] 
        (FOR ALL FIELDS IN THE JSON DATA)
    

    Why is the data wrong even when I convert the dict() to JSON using dumps() method?

    NOTE : If all the fields in the payload were string, the data is posted as expected.