I'm getting an error when trying to open a website url with Python 3.1, urllib & json: operation was attempted on something that is not a socket
Question: I'm getting an error when trying to open a website url with Python 3.1, urllib
& json

urllib.error.URLError:

Here's the code. The first website loads fine. The second one

    
    
    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:

File "c:\dev\xdev\PyJigsaw\searchContact.py", line 46, in result =
json.load(urllib.request.urlopen(jg_url))

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

File "c:\dev\tdev\Python31\Lib\urllib\request.py", line 349, in open response
= self._open(req, data)

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

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

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

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


Answer: Please edit the title and tags and maybe even the question body: This has
nothing to do with JSON and everything to do with Windows. It's also at a
lower level than urllib. (Probably in the SSL code.) Distilled:

Both of the following approaches fail on Python 3.1.2 for Vista, but work fine
on Linux (Python 3.1.3)

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

Change them to not use SSL, and then they work fine on Windows:

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

