python - 用python请求模仿curl命令

标签 python curl

我运行curl命令,如下所示:

curl --tlsv1.2 -k -i -X POST -d 'payload={<json-payload>}' https://url.com:/handles/handle1

它运行得很好。现在我需要在 python 中模仿这个。引用this解决方案,我尝试在python控制台中运行它:

>>> import requests
>>> data = 'payload={<json-payload>}'
>>> headers = {'Content-type':'application/json'}
>>> response = requests.post('https://url.com:/handles/handle',headers=headers,data=data)

但出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 116, inpost
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='url.com', port=443): Max retries exceeded with url: /handles/handle (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618)'),))

我该如何解决这个问题?

最佳答案

要忽略 TLS 错误,例如 curl 中的 -k (--insecure),您需要使用 verify=错误的参数。

要传递 POST 数据,请使用 dict:

data = {'payload': <json-payload>}

现在您的请求变为:

requests.post('https://url.com:/handles/handle', headers=headers, data=data, verify=False)

如果您希望 POST data 进行 JSON 序列化,请使用 json 参数而不是 data:

requests.post('https://url.com:/handles/handle', headers=headers, json=data, verify=False)

关于python - 用python请求模仿curl命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807005/

相关文章:

python - 导入错误 : No module named saml2. 验证

coding-style - 良好的语义,子类还是模拟?

python - x,y = getPos() 与 (x, y) = getPos()

json - 如何使用 cURL 将 json 脚本放入文件中以在 PowerShell 中使用

html - Paypal 订阅设置

python - 是否可以在不实例化其类的情况下获取 Tkinter 小部件的默认选项?

python - 我正在尝试将我的 matlab 代码转换为 python 以获得自适应高斯求积

PHP 7.0 cURL 不起作用 - Windows 10 64 位上的 WAMP

c++ - 从服务器下载图像(cUrl,但采纳建议)C++

curl - "TLS wrong version number"与 OpenSSL 1.1.1