将curl转换为Python requests.put

时间:2015-07-21 14:45:17

标签: python curl python-requests

我查了几件事,我只是找不到一个正在做我正在做的事。我发现那些很接近,但我似乎无法得到它。

我有这个卷曲声明。成功时返回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 个答案:

答案 0 :(得分:2)

尝试将data替换为json.dumps(data)

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

答案 1 :(得分:0)

哎呀!!!

发现错误。在卷曲中,我正在路过:

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

在request.put中,我传递了:

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

我错过了将整个事情整合到我的服务期望中的外部引号。