2015-07-21 126 views
0

我查了幾件東西,我只是沒有找到一個正在做我正在做的事情。我發現那些很近的,但我似乎無法得到它。將curl轉換爲Python請求.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

您將curl調用中的lat/long作爲float提供,但在Python代碼中作爲字符串提供。嘗試使用:'data = {「latitude」:47.629355,「longitude」:-122.3794778}'。否則代碼看起來很好。 – Bjorn

+0

這也是我原來的數據,它不起作用。我再次嘗試,以確保我沒有錯過它,但仍然無法正常工作。仍然得到一個400. – mikecole79

+0

打印r.text告訴我這個「無效的請求:無法讀取數字:緯度= 47.629355和經度= -122.3794778」 – mikecole79

回答

2

嘗試用json.dumps(data)更換data

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

好的趕上! :-) – Bjorn

0

哎呀!

發現錯誤。在嫋嫋,我是路過:

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

在我經過request.put:

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

我缺少的是跑了整個事情的外部引號一起成什麼樣我的服務被期待。