2010-05-20 17 views
2

Merci pour l'aide à l'avance. Je suis perplexe que le même code fonctionne pour python 2.6 mais pas 2.5. Voici le codeEst-ce que urllib ou urllib2 dans Python 2.5 supporte https?

import cgi, urllib, urlparse, urllib2 
url='https://graph.facebook.com' 

req=urllib2.Request(url=url) 
p=urllib2.urlopen(req) 
response = cgi.parse_qs(p.read()) 

Et voici l'exception que je suis

Traceback (most recent call last): 
    File "t2.py", line 6, in <module> 
    p=urllib2.urlopen(req) 
    File "/home/userx/lib/python2.5/urllib2.py", line 124, in urlopen 
    return _opener.open(url, data) 
    File "/home/userx/lib/python2.5/urllib2.py", line 381, in open 
    response = self._open(req, data) 
    File "/home/userx/lib/python2.5/urllib2.py", line 404, in _open 
    'unknown_open', req) 
    File "/home/userx/lib/python2.5/urllib2.py", line 360, in _call_chain 
    result = func(*args) 
    File "/home/userx/lib/python2.5/urllib2.py", line 1140, in unknown_open 
    raise URLError('unknown url type: %s' % type) 
urllib2.URLError: <urlopen error unknown url type: https> 

Encore une fois, apprécier l'aide.

Répondre

8

Vous avez probablement la version 2.5 compilée sans le support SSL.

Essayez ceci:

>>> import socket 
>>> socket.ssl 
<function ssl at 0xb7ce602c> 

pour vérifier si ssl est présent (c.-à-vous ne se coincent pas AttributeError)

+0

ce doit être ça! – oliodu

+1

Je viens de remarquer que les python plus récents ont toujours cette fonction définie, mais il imprime un avertissement de dépréciation si vous l'appelez, une meilleure vérification pourrait être 'import _ssl' –

6

Si vous obtenez

urllib2.URLError: <urlopen error unknown url type: https> 

vous devez installer OpenSSL , libssl-dev et reconstruire python à partir de sources

+2

Ou openssl-devel sur les plates-formes CentOS/RedHat. – claymation

+0

@Oleg: merci pour les exigences d'installation .. ils ont été très utiles pour résoudre ce problème. – tom10