2015-07-21 7 views
0

Я искал несколько вещей, и я просто не нахожу того, что делает именно то, что я делаю. Я нашел те, которые близки, но я не могу понять.Преобразование curl в Python requests.put

У меня есть эта инструкция для завивки. Он возвращает 204 при успешном завершении, и он отлично работает.

# curl -v -H "Content-type: application/json" -X PUT -d '{"latitude":47.629355,"longitude":-122.3794778}' "http://myserver.com/location/private/location" 

Когда я пытаюсь преобразовать его запросов Python, кажется, что это должно быть следующим:

headers = {'Content-type': 'application/json'} 
data = {"latitude":'47.629355',"longitude":'-122.3794778'} 
r = requests.put("http://myserver.com/location/private/location", headers=headers, data=data) 

Однако это терпит неудачу и возвращение 400 (плохой запрос) а. Так что что-то не так, как я его создал.

Я продолжал суетиться, меняя кавычки и т. Д. Но, основываясь на том, что я читал на SO и на http://docs.python-requests.org/, мне кажется, что я делаю это правильно.

Любая мудрость для обмена будет оценена по достоинству. Благодаря!

+2

Вы предоставляете lat/long в curl call как float, но в вашем коде python как строку. Попробуйте: 'data = {" широта ": 47.629355," longitude ": -122.3794778}'. Код выглядит иначе. – Bjorn

+0

Это то, что я изначально имел для данных, и это не сработало. Я попробовал снова, чтобы убедиться, что я не пропустил его, и все еще не работает. Все еще получаю 400. – mikecole79

+0

Печать r.text показывает мне это «Неверный запрос: Не удалось прочитать номер: latitude = 47.629355 & longitude = -122.3794778» – mikecole79

ответ

2

Попробуйте заменить data с json.dumps(data):

import json 
r = requests.put("http://myserver.com/location/private/location", headers=headers, data=json.dumps(data)) 
+0

Nice catch! :-) – Bjorn

0

ARGH !!!

Обнаружили ошибку. В завитка, я проходил:

'{"latitude":47.629355,"longitude":-122.3794778}' 

В request.put я проходил:

{"latitude":47.629355,"longitude":-122.3794778} 

я пропускал внешние кавычки, которые бежали все это вместе в то, что ожидали мои услуги.

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