python - 需要从curl迁移到pycurl的帮助

标签 python curl pycurl

我正在尝试弄清楚如何将 pycurl“POST”发送到 REST 接口(interface)(在本例中为 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)

我该如何处理要传输的数据?

编辑:我所说的数据是指名为数据的变量。如何通过 pycurl 发送数据(-d 选项中包含的内容)。我尝试过对它进行 urlencode 但出现错误(显然,因为它的类型)。我尝试过 urllib.quote_plus() 但这导致 REST 服务出现 400 错误。我怀疑这是问题所在,因为我的 GET 工作正常。

最佳答案

附加这些语句可能会有所帮助:

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

关于python - 需要从curl迁移到pycurl的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558484/

相关文章:

python - 如何附加到 CSV 文件?

python - 在 Kivy 中通过 if 条件更改屏幕似乎不起作用

ios - 如何将此 curl 命令转换为 Objective-C

python - pycurl 请求存在于 header 函数中吗?

python - 寻找基因中的外显子/内含子边界

python - 使用多行属性解析 XML

python - urllib2 HTTPPasswordMgr 不起作用 - 凭据未发送错误

r - 使用opencpu连接云服务器时获取授权签名消息

python - 多请求 pycurl 永远运行(无限循环)

python - 我可以使用 pycurl/curl 设置低优先级上传请求以避免使用所有上游吗