Я использую curl POST для тестирования API tipboard в моей системе. Я был в состоянии успешно послать POST к плате с помощью:Преобразование curl POST в запросы python
curl https://** SECRET **/api/v0.1/** SECRET **/push -X POST -d "tile=big_value" -d "key=t_out" -d 'data={"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"}'
Так как скрипт, который должен быть использован в конце концов базируется на Python, я сделал некоторые исследования и нашел библиотеку requests питона.
я трансформировал свой локон запрос в следующий код:
payload = {'title': 'big_value', 'key': 't_out', 'data': '"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"'}
r = requests.post("https://** SECRET **/api/v0.1/** SECRET **/push", data=payload)
print(r.text)
print(r.status_code, r.reason)
Который дает мне следующий код ошибки:
There is no 'tile' field in your request.
(400, 'Bad Request')
я предполагаю, что моя нагрузка не настроена правильно, скорее всего, вопрос что я только отправляю один объект «данных» при использовании Python, а не отправляю несколько «элементов данных», например, с помощью curl.
Как я могу равномерно преобразовать свой запрос на завивки в вариант Python?
Edit:
После намека Дэна Лоу, что у меня был «титул» вместо «плитки» в моей просьбе вести меня дальше с другой ошибки с помощью следующей (отредактированного) код:
payload = {'tile': 'big_value', 'key': 't_out', 'data': '"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"'}
r = requests.post("https://dev-01.linuxmind.de/api/v0.1/46d7213bd81d441783dc9ab77e5515c2/push", data=payload)
print(r.text)
print(r.status_code, r.reason)
Ошибка:
Invalid JSON data.
(400, 'Bad Request')
Ваш код curl устанавливает 'tile = big_value', но в коде Python у вас есть это' title', а не 'tile'. –
Ваш параметр данных должен быть другим языком python, а не строкой –
Взгляните на этот ответ. http://stackoverflow.com/a/29687915/2308683 –