2014-03-30 50 views
1

我期待PUT数据在Python的Pipeline Deals APIRequests,虽然我得到一个Response 200,该数据实际上并不成功PUT。当我与cURL做出完全相同的请求时,它确实如此。下面是Python代码不起作用:Python的请求PUT不是工作,而是卷曲确实

param = {'api_key': 'MY API KEY'} 
url = "https://api.pipelinedeals.com/api/v3/companies/14634816.json" 
r = requests.put(url, params=param, data="company[name]=Python") 
print r 
--> <Response [200]> 

当我运行此cURL代码,它的工作原理:

curl --X PUT -d "company[name]=cURL" \ 
"https://api.pipelinedeals.com/api/v3/companies/14634816.json?api_key=SAME_API_KEY" 

我缺少的东西?或者有可能我在请求库中遇到了一个错误,比如https

谢谢!

+0

尝试运行卷曲用'--verbose'选项并将请求头与Python请求中的请求头进行比较 –

回答

2

更改比特到的网址:

url = "https://api.pipelinedeals.com/api/v3/companies/14634816.json?api_key=MY_API_KEY" 

然后是PARAMS:

param = {"company[name]":"Python"} 

我们的PUT

r = requests.put(url, data=param) 
+0

Worked!我玩了一下,实际上这个问题似乎并不是将API Key添加到URL中,而是将数据编码为“{”company [name]“:”Python“}'。所以根据[文档](https://www.pipelinedeals.com/api/docs/request_response),可以将PUT作为JSON或字符串。任何想法我都会这样做:'{'company' :{ '名': 'Python的'}}'? – rickcnagy

+0

不确定,但可能是这样的'{“company”:{“name”:“Python”}}'(如果它的json需要)。 –

+0

Gotcha。这不起作用(或其他变体),但我认为'{“company [name]”:“Python”}'应该可以正常工作。谢谢! – rickcnagy