Python urllib2 autenticación básica

Hola, estoy tratando de usar python para acceder a una URL de API usando urllib2:

import urllib2 url = 'https://XXXXXXXXXX.com/' username = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' password = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, url, username, password) authhandler = urllib2.HTTPBasicAuthHandler(passman) opener = urllib2.build_opener(authhandler) urllib2.install_opener(opener) pagehandle = urllib2.urlopen(url) 

No sé qué es el reino, pero supongo que puedo usar el valor predeterminado, es decir, Ninguno.

De todos modos, todavía me sale el error 401:

Rastreo (última llamada más reciente): Archivo “test5.py”, línea 12, en el identificador de página = urllib2.urlopen (url) Archivo “/usr/lib/python2.6/urllib2.py”, línea 126, en urlopen return _opener .open (url, data, timeout) Archivo “/usr/lib/python2.6/urllib2.py”, línea 397, en respuesta abierta = met (req, response) Archivo “/usr/lib/python2.6/urllib2 .py “, línea 510, en http_response ‘http’, solicitud, respuesta, código, msg, hdrs) Archivo” /usr/lib/python2.6/urllib2.py “, línea 435, con error devolver self._call_chain (* args) Archivo “/usr/lib/python2.6/urllib2.py”, línea 369, en _call_chain result = func (* args) Archivo “/usr/lib/python2.6/urllib2.py”, línea 518, en http_error_default raise HTTPError (req.get_full_url (), código, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 401: No autorizado

Así que parece que hay algo mal con la autenticación. ¿Es más probable que el uso de reino = Ninguno?

¡Gracias!

No pude entender por qué este método no funcionó, pero tuve éxito al llamar a la API usando este código:

 base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '') request = urllib2.Request(url) request.add_header("Authorization", "Basic %s" % base64string) result = urllib2.urlopen(request) data = result.read()