从curl到pycurl需要帮助

时间:2010-12-29 22:38:12

标签: python curl pycurl

我正在试图找出如何将一个pycurl“POST”发送到REST接口(在本例中为Neo4j)。

我可以通过CURL用:

来完成
curl -HContent-Type:application/json -X POST -d '"http://localhost:7474/db/data/node/123"' http://localhost:7474/db/data/index/node/persons/name/peter

...但我无法弄清楚如何使用CURL选项进行翻译。这是我得到的最接近但却失败的

data = "http://localhost:7474/db/data/node/123"
headers = {"Content-Type": "application/json"}
url_dir = "http://localhost:7474/db/data/index/node/persons/name/peter"

conn = pycurl.Curl()
c.setopt(pycurl.URL, url_dir)
c.setopt(pycurl.HTTPHEADER, headers)

如何处理要传输的数据?

编辑:按数据我的意思是名为data的变量。如何通过pycurl发送数据(-d选项中包含的内容)。我已经尝试了urlencode-ing但是得到了一个错误(显然,因为它的类型)。我已经尝试了urllib.quote_plus(),但这导致了REST服务的400错误。我怀疑这是问题,因为我的GET工作正常。

1 个答案:

答案 0 :(得分:3)

附加这些陈述可能有所帮助:

c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)

查看libcurl tutorial的“HTTP POSTing”部分以获取更多信息。

注1:如果data字符串必须用双引号括起来,那么你应该这样做:c.setopt(pycurl.POSTFIELDS, '"%s"' % data)

注意2:我认为您输错了:conn变量必须被称为c