ich möchte mit einer API im Internet sprechen. Das ist an sich kein Problem und sieht in etwa so aus:
Code: Alles auswählen
data = urllib.urlencode({"names" : name})
request = urllib2.urlopen(url=url, data=data)
content = request.read()
Lasse ich das Programm unter Windows laufen, dann kommt es meistens in der urlopen-Zeile zu folgendem Fehler (angepasster Stacktrace):
Das scheint ein Problem mit dem Zertifikat der SSL-Verbindung zu sein. Wenn ich danach suche, finde ich aber nur Einträge, die deutlich älter sind als die eingesetzte Python-Version.<type 'exceptions.ValueError'>:
Empty certificate data
request = urllib2.urlopen(url=url, data=data)
File "C:\Python27\lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 431, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 449, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1240, in https_open
context=self._context)
File "C:\Python27\lib\urllib2.py", line 1166, in do_open
h = http_class(host, timeout=req.timeout, **http_conn_args)
File "C:\Python27\lib\httplib.py", line 1200, in __init__
context = ssl._create_default_https_context()
File "C:\Python27\lib\ssl.py", line 427, in create_default_context
context.load_default_certs(purpose)
File "C:\Python27\lib\ssl.py", line 378, in load_default_certs
self._load_windows_store_certs(storename, purpose)
File "C:\Python27\lib\ssl.py", line 370, in _load_windows_store_certs
self.load_verify_locations(cadata=certs)
Hat jemand eine Idee, wie ich das zum Laufen bringe?
Verwendetes Python:
Linux 2.7.6
Windows: 2.7.9