在pycurl请求中表单数据

Kon*_*rad 5 python rest post pycurl

我想用pycurl进行以下curl请求:

curl -v \
-H Accept:application/json \
-F "model={
name: 'zxy',
targets: [ 'abc']
}" \
-F "deployment=@/deployments/MyApp.ear" \
-X POST https://abc.cde
Run Code Online (Sandbox Code Playgroud)

如何将后续-F选项放到后场?

我目前:

c = pycurl.Curl()
c.setopt(pycurl.URL, "https://abc.cde")
c.setopt(pycurl.HTTPHEADER, ['Accept:application/json'])
c.setopt(pycurl.POST, 1)
# set postfield somehow
Run Code Online (Sandbox Code Playgroud)

meu*_*euh 8

这是我对你的curl脚本的转换.

#!/usr/bin/python
import os, sys, pycurl
model = """{
name: 'zxy',
targets: [ 'abc']
}"""
path = '/deployments/MyApp.ear'
c = pycurl.Curl()
c.setopt(pycurl.URL, 'https://abc.cde')
c.setopt(pycurl.HTTPHEADER, ['Accept:application/json'])
send = [("model", model),
        ('deployment', (pycurl.FORM_FILE, path)),]
c.setopt(pycurl.HTTPPOST, send)
#c.setopt(pycurl.VERBOSE, 1)
c.perform()
print c.getinfo(pycurl.RESPONSE_CODE)
c.close()
Run Code Online (Sandbox Code Playgroud)

在表格上找到pycurl的例子并不容易.在doc中没有,所以我下载了源代码并使用了tests/post_test.py.