将cURL-JSON数据转换为pycurl

将cURL-JSON数据转换为pycurl,curl,pycurl,Curl,Pycurl,我有一个cURL命令,它从某个网站返回一个JSON文件: curl-H“内容类型:application/json” -d“{'item':'item-xyz',方向:横向,选项:null}” https://api.website.com/jsonApi/product/formatAndPrice 但是,此Python代码不起作用,网站返回一个错误: 导入pycurl 从io导入字节io crl=pycurl.Curl() file=open('out.json','wb') crl.se

我有一个cURL命令,它从某个网站返回一个JSON文件:

curl-H“内容类型:application/json”
-d“{'item':'item-xyz',方向:横向,选项:null}”
https://api.website.com/jsonApi/product/formatAndPrice
但是,此Python代码不起作用,网站返回一个错误:

导入pycurl
从io导入字节io
crl=pycurl.Curl()
file=open('out.json','wb')
crl.setopt(crl.WRITEDATA,文件)
数据='{“项”:“项xyz”,“方向”:“横向”,“选择”:null}'
缓冲区=字节数(data.encode('utf-8'))
crl.setopt(crl.READDATA,缓冲区)
setopt(crl.HTTPHEADER,['Content-Type:application/json'])
crl.setopt(crl.URL,“https://api.website.com/jsonApi/product/formatAndPrice")
crl.perform()
crl.close()

我做错了什么?

执行crl.setopt(crl.VERBOSE,1),这将为您提供详细的输出,帮助您发现问题。这里的问题最有可能是
crl.setopt(crl.READATA,buffer)
。buffer是python保留的关键字,所以我不确定您的代码以前是否出错。我认为crl.READDATA不是当前使用的方法。我将使用的是crl.setopt(crl.POSTFIELDS,body),其中body是一个有效的python字典。如果您还将数据变量保存到python字典中,那么它应该可以工作