PythonCharmers/python-future

Basic Auth broken in future/backports/urllib/request.py ?

Open

#303 aperta il 3 set 2017

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)Python (327 fork)batch import
0.20bughelp wanted

Metriche repository

Star
 (1172 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

This code works in python 3 but not python 2.7

Based on Basic Auth Example in Python Manual

from future import standard_library
standard_library.install_aliases()

import urllib.request
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib.request.HTTPBasicAuthHandler()
auth_handler.add_password(realm='Fake Realm',
                          uri='https://httpbin.org',
                          user='a',
                          passwd='b')
opener = urllib.request.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib.request.install_opener(opener)
urllib.request.urlopen('https://httpbin.org/basic-auth/a/b')

Python 2 gives this error

Traceback (most recent call last):
  File "t2.py", line 14, in <module>
    urllib.request.urlopen('https://httpbin.org/basic-auth/a/b')
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 171, in urlopen
    return opener.open(url, data, timeout)
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 500, in open
    response = meth(req, response)
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 612, in http_response
    'http', request, response, code, msg, hdrs)
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 538, in error
    return self._call_chain(*args)
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 466, in _call_chain
    result = func(*args)
  File "/Users/tingle/code/ezid/ve27/lib/python2.7/site-packages/future/backports/urllib/request.py", line 620, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
future.backports.urllib.error.HTTPError: HTTP Error 401: UNAUTHORIZED

Guida contributor