2017-12-18 4 views
0

urllib3.PoolManager를 사용하여 http 요청을하고 있습니다. 그리고 내 코드의 일부에 내가 요청을어떻게 SSL을 잡을 수 있습니까? CERTIFICATE_VERIFY_FAILED python 오류가 발생 했습니까?

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] 

오류가 발생합니다. 하지만 문제는 블록을 제외하고 시도 할 때 오류를 잡을 수 없다는 것입니다.

나는
except ssl.SSLError: 

을 사용하려고하지만이 오류를 잡을 수 없습니다. 또한 ssl.CertificateError를 시도했지만 결과가 없습니다. Exception 클래스를 사용하여 catch 할 수 있지만 특정 오류를 catch하고 다르게 처리해야합니다. 누군가 나를이 해결책으로 생각해 주시겠습니까?

답변

1

해결책을 찾았습니다. 제기 된 예외 클래스는 입니다. urllib3.exceptions.SSLError입니다.

관련 문제