我试图在我的Python代码中编写curl等价物。
curl -i -u username:password -H "Content-Type: application/json;charset=utf-8" -X POST -d '{"id_no":"7877"}' https://host/XXXX/ -k
在哪里,我有我的用户名,密码和主机详细信息。
我的Python代码如下:
headers = {'Content-Type': 'application/json;charset=utf-8'}
parameter = {'id_no': 7877}
p_response = requests.post(url,auth=('username', 'password'), headers=headers,params=parameter)
但是,我收到以下错误:
requests.exceptions.SSLError: HTTPSConnectionPool(host='host', port=443): Max retries exceeded with url: /id_no/?id_no=7877 (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)'),))
有人可以告诉我这些变化吗?
答案 0 :(得分:1)
您在curl命令中使用了-k
标志(告诉它不要验证SSL),但您确实为requests.post
提供了相应的kwarg。
使用verify=False
。
此外,由于您在-d
上使用了curl
标记,因此您需要使用data
kwarg requests
。{/ p>
p_response = requests.post(url, auth=('username', 'password'),
headers=headers, data=parameter,
# ^
verify=False)
# ^
-k,--insecure
(TLS)默认情况下,验证每个SSL连接卷曲 安全。此选项允许卷曲继续进行,甚至可以为服务器操作 否则被视为不安全的连接。
通过确认服务器来验证服务器连接 证书包含正确的名称并验证是否成功使用 证书商店。
有关详细信息,请参阅此在线资源: https://curl.haxx.se/docs/sslcerts.html
另见--proxy-insecure和--cacert。
如果设置,请求也可以忽略验证SSL证书 验证为False: