2015-07-21 128 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} 

我缺少的是跑了整个事情的外部引号一起成什么样我的服务被期待。