Ошибка "имя" true "не определена при отправке запроса POST - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь отправить POST-запрос, требующий отправки литерала true как части полезной нагрузки JSON. Я знаю, что могу изменить его на True, который Python нравится, но он не работает с тестируемым API (SCIM).

Как мне отправить слово true и отправить Python это как есть? Это работает, когда я отправляю через Почтальон. Используя приведенный ниже пример с httpbin с той же ошибкой.

import requests

headers = {
            "Accept": "Application/json",
            "Content-Type": "Application/json"
        }       


payload = {
    "emails": [{
        "primary": true,
        "value": "jack@justjack.com",
        "type": "work"
    }]
 }

print (type (payload))  

print (payload)

resp = requests.post ('http://httpbin.com/post',headers=headers,data=payload)
print(resp.content)

Я получаю сообщение об ошибке

   "primary": true,
NameError: name 'true' is not defined"

Ответы [ 2 ]

2 голосов
/ 12 января 2020

Используйте Python обычный True и преобразуйте dict в JSON строку при создании полезной нагрузки:

import json

payload = {
    "emails": [{
        "primary": True,
        "value": "jack@justjack.com",
        "type": "work"
    }]
 }

resp = requests.post('http://httpbin.com/post', headers=headers, data=json.dumps(payload))
#                                                                     ^^^^^^^^^^
0 голосов
/ 12 января 2020

in python мы используем True или False вместо true / false, вы можете прочитать далее здесь в PEP-285

...