将 POST 卷曲成 pycurl 代码
Curl POST into pycurl code
我正在尝试将以下 curl 请求转换为 pycurl:
curl -v \
--user username:passwd \
-H X-Requested-By:MyClient \
-H Accept:application/json \
-X POST \
http://localhost:7001/some_context
并且有效。以下无效:
import pycurl, json
url = "http://localhost:7001/some_context"
c = pycurl.Curl()
data = json.dumps(None)
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json', 'X-Requested-By:MyClient'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()
但执行此操作时出现错误 415:不支持的媒体类型。你有什么主意吗?我宁愿留在 pycurl-我知道请求库...
你的 post 数据是错误的,根据 http://pycurl.io/docs/latest/quickstart.html#sending-form-data 它需要一个字典,而不是一个字符串。 (json.dumps(None) == 'null'
)
您从网络服务器收到的错误很可能与此有关。
import pycurl, json
url = "http://localhost:7001/some_url"
c = pycurl.Curl()
data = {'whatever_field': None}
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json', 'X-Requested-By:MyClient'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()
此脚本模仿您的 curl
命令行,但 URL 除外。我已经替换了你的 URL 这样我们就可以测试同一个服务器。
import pycurl, json
url = "http://localhost:7001/some_url"
url= 'http://httpbin.org/post'
c = pycurl.Curl()
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDSIZE, 0)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json',
'X-Requested-By:MyClient',
'Content-Type:',
'Content-Length:'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()
我正在尝试将以下 curl 请求转换为 pycurl:
curl -v \
--user username:passwd \
-H X-Requested-By:MyClient \
-H Accept:application/json \
-X POST \
http://localhost:7001/some_context
并且有效。以下无效:
import pycurl, json
url = "http://localhost:7001/some_context"
c = pycurl.Curl()
data = json.dumps(None)
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json', 'X-Requested-By:MyClient'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()
但执行此操作时出现错误 415:不支持的媒体类型。你有什么主意吗?我宁愿留在 pycurl-我知道请求库...
你的 post 数据是错误的,根据 http://pycurl.io/docs/latest/quickstart.html#sending-form-data 它需要一个字典,而不是一个字符串。 (json.dumps(None) == 'null'
)
您从网络服务器收到的错误很可能与此有关。
import pycurl, json
url = "http://localhost:7001/some_url"
c = pycurl.Curl()
data = {'whatever_field': None}
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json', 'X-Requested-By:MyClient'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()
此脚本模仿您的 curl
命令行,但 URL 除外。我已经替换了你的 URL 这样我们就可以测试同一个服务器。
import pycurl, json
url = "http://localhost:7001/some_url"
url= 'http://httpbin.org/post'
c = pycurl.Curl()
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDSIZE, 0)
c.setopt(pycurl.URL, url)
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json',
'X-Requested-By:MyClient',
'Content-Type:',
'Content-Length:'])
c.setopt(pycurl.VERBOSE, 1)
c.setopt(pycurl.USERPWD, "username:passwd")
c.perform()