我正在使用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类来捕获它,但我需要捕获特定的错误并以不同的方式处理它们。有人可以找到我的解决方案吗?
我找到了解决方案。正在引发的异常类是urllib3.exceptions.SSLError。