PythonCharmers/python-future

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

Open

#303 aberto em 3 de set. de 2017

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)Python (327 forks)batch import
0.20bughelp wanted

Métricas do repositório

Stars
 (1.172 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

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

Guia do colaborador