在我的python脚本中,我试图按如下方式调用我的api:
with requests.Session() as session:
url= 'https://example.com'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
request_parameters = {'username': 'test', 'password':'pass'}
response = (session.post(auth_url, data=request_parameters, headers=headers))
我收到以下异常:
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 518, in post return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Programs\Python\Python36\lib\site-packages\requests\sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Programs\Python\Python36\lib\site- packages\requests\adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
我想将我的服务称为https://example.com。它适用于http://连接,但不适用于https://。 我应该怎么做https连接?此外,当我通过Rest Client将服务称为https时,它可以很好地工作。 有没有其他方法可以将服务称为https连接?
答案 0 :(得分:2)
您可以停用SSL验证,但不建议这样做。
如果您知道并信任您要发布数据的网站,那就没关系,但请注意,如果它被劫持,您会将数据发布到恶意内容,直到您意识到它被泄露为止。
with requests.Session() as session:
session.post('https://google.com', data={'hello': 1}, verify=False)
这是不使用验证时会收到的警告:
C:\ Users \ vsyrakis \ AppData \ Local \ Continuum \ Anaconda3 \ lib \ site-packages \ requests \ packages \ urllib3 \ connectionpool.py:791:insecureRequestWarning:正在进行未验证的HTTPS请求。强烈建议添加证书验证。请参阅:https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning)