2 Stimmen

Ich erhalte eine Fehlermeldung, wenn ich versuche, eine Website url mit Python 3.1, urllib & json zu öffnen: Operation wurde versucht, auf etwas, das nicht ein Socket ist

Ich erhalte einen Fehler, wenn ich versuche, eine Website url mit Python 3.1, urllib & json zu öffnen

urllib.error.URLError:

Hier ist der Code. Die erste Website wird problemlos geladen. Die zweite

import json
import urllib.request
import urllib.parse
import util

# This one works fine
response = urllib.request.urlopen('http://python.org/')
html = response.read()
print(html)

# parms - CSV filename, company, ....

p_filename = "c:\\temp\\test.csv"

jg_token = "zzzzzzzzzzzzzzzzzzzzzzzzz"
jg_proto = "https://"
jg_webst = "www.jigsaw.com/rest/"

jg_cmd_searchContact = "searchContact.json"

jg_key_companyName = "companyName"
jg_key_levels      = "levels"
jg_key_departments = "departments"

jg_args = {
        "token":jg_token,
        jg_key_companyName: "Technical Innovations",
        jg_key_departments: "HR"
        }

jg_url = jg_proto + jg_webst + jg_cmd_searchContact + "?" + urllib.parse.urlencode(jg_args)

    # This one generates teh error
result = json.load(urllib.request.urlopen(jg_url))

urllib.error.URLError:

Datei "c: \dev\xdev\PyJigsaw\searchContact.py ", Zeile 46, in Ergebnis = json.load(urllib.request.urlopen(jg_url))

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 121, in urlopen return _opener.open(url, data, timeout)

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 349, in open Antwort = self._open(req, data)

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 367, in _open '_open', req)

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 327, in _call_chain result = func(*args)

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 1098, in https_open return self.do_open(http.client.HTTPSConnection, req)

Datei "c: \dev\tdev\Python31\Lib\urllib\request.py ", Zeile 1075, in do_open raise URLError(err)

1voto

CrazyPyro Punkte 2909

Bitte bearbeiten Sie den Titel und die Tags und vielleicht sogar den Fragenteil: Dies hat nichts mit JSON und alles mit Windows zu tun. Es ist auch auf einer niedrigeren Ebene als urllib. (Wahrscheinlich im SSL-Code.) Destilliert:

Beide der folgenden Ansätze schlagen unter Python 3.1.2 für Vista fehl, funktionieren aber problemlos unter Linux (Python 3.1.3)

print( HTTPSConnection(hostname).request('GET',url).getresponse().read() )
print( urllib.request.urlopen('https://'+hostname+url).read() )

Ändern Sie sie so, dass sie kein SSL verwenden, und dann funktionieren sie unter Windows problemlos:

print( HTTPConnection(hostname).request('GET',url).getresponse().read() )
print( urllib.request.urlopen('http://'+hostname+url).read() )

1voto

CrazyPyro Punkte 2909

Unter Vista habe ich gerade ein Upgrade von Python 3.1.2 auf Python 3.2 durchgeführt und dieses Problem ist nicht mehr vorhanden. Das Folgende funktioniert jetzt einwandfrei:

print( urllib.request.urlopen('https://'+hostname+url).read() )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X