我如何捕获SSL:CERTIFICATE_VERIFY_FAILED错误python?

问题描述 投票:0回答:1

我正在使用urllib3.PoolManager来发出http请求。在我的代码的某些部分,我使用此代码发出请求

resp = h.request(self.method, self.url, body=body, headers=headers, timeout=TIMEOUT, retries=retries)

我收到错误SSL:CERTIFICATE_VERIFY_FAILED。下面是完整的堆栈跟踪。

  File "/lib/python2.7/site-packages/urllib3/request.py", line 69, in request
    **urlopen_kw)

  File "/lib/python2.7/site-packages/urllib3/request.py", line 90, in request_encode_url
    return self.urlopen(method, url, **extra_kw)

  File "/lib/python2.7/site-packages/urllib3/poolmanager.py", line 248, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)

  File "/lib/python2.7/site-packages/urllib3/connectionpool.py", line 621, in urlopen
    raise SSLError(e)

[SSL: CERTIFICATE_VERIFY_FAILED]

错误是预期的。但问题是我无法在try中捕获错误,除了块。

我试着用

 except ssl.SSLError:

但这并没有发现这个错误。我也尝试过ssl.CertificateError但没有结果。我可以通过使用Exception类来捕获它,但我需要捕获特定的错误并以不同的方式处理它们。有人可以找到我的解决方案吗?

python ssl exception ssl-certificate urllib3
1个回答
1
投票

我找到了解决方案。正在引发的异常类是urllib3.exceptions.SSLError。

© www.soinside.com 2019 - 2024. All rights reserved.