2016-05-22 8 views
0

Я использую 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') 
+1

Ваш код curl устанавливает 'tile = big_value', но в коде Python у вас есть это' title', а не 'tile'. –

+0

Ваш параметр данных должен быть другим языком python, а не строкой –

+1

Взгляните на этот ответ. http://stackoverflow.com/a/29687915/2308683 –

ответ

1

Преобразовать data объект размещать в виде строки не как dict. Вы можете сделать это:

data = json.dumps(payload)