2017-02-08 3 views
0

документация кажется, указывает, что я могу передать данные «=» в качестве словаря, но я получаю сообщение об ошибке, если я использую json.dumps()почему питон requests.post принимает JSON для данных, но не словарь

options = { 
    "deviceId":["4d51de64-2235-a465-3aee-5ec495b5b250"], 
    "serviceName":"software_manager", 
    "serviceVersion":"1.0", 
    "actionName":"Dump Log Files" } 

res = requests.post(req, data=json.dumps(options), auth=cred) 

If Я пытаюсь передать параметры в качестве словаря, который он терпит неудачу.

res = requests.post(req, data=options, auth=cred) 

data=json.dumps(options) # This works 
data=options    # this fails 

Почему? Я что-то пропустил в документах?

+4

Fails * как *? Показать ошибку. –

+1

Вы должны использовать 'res = requests.post (req, json = options, auth = cred)'. –

+0

Вам нужно проверить, какой тип носителей ожидает от POST. Это может быть неудачным, потому что пункт назначения принимает только json. –

ответ

1

Параметр requests.post()data или принимает данные в форме закодированные (если передать его dict) или в качестве сырья строки (поэтому json.dumps(options) работы).

Для того, чтобы перейти в некодированный словарь, вы должны использовать параметр json.post().

+0

Спасибо. Я пропустил часть о «закодированной форме» ... http newbie! – pab

Смежные вопросы