0

httplib2 を使用して HTTPS GET を実行しようとすると、次のエラーが発生します。

>>> import httplib2
>>> http = httplib2.Http(cache=None, timeout=30)
>>> response, content = http.request('https://www.example.com', 'GET')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1436, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1188, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 1162, in _conn_request
    conn.connect()
  File "/app/jython/2.5.2/Lib/site-packages/httplib2/__init__.py", line 925, in connect
    raise socket.error, msg
socket.sslerror: (-1, 'SSL exception')

私は SSL にあまり詳しくなく、-1 エラー コードの意味もよくわかりません。httplib2 は SSL 証明書を検証しないと想定していました。

通常の wget は失敗しますが、wget --no-check-cert は機能します。

$ wget -qO- https://www.example.com --no-check-certificate

Up

ブラウザから URL にアクセスしても問題ないようです。コードで何か間違ったことをしていますか? または、socket.sslerror: (-1, 'SSL exception') は何か他の問題があることを意味しますか?

4

1 に答える 1

1

SSL のサポートは、基礎となるソケット モジュールによって異なります。この場合、ssl サポートがあるようです。あなたはそれを無効にすることができます...

http = httplib2.Http(cache=None, timeout=30, disable_ssl_certificate_validation=True)
于 2012-07-18T03:07:01.457 に答える