Trap Authentication Errors in HTTP Request
naugiedoggie
michael.a.powe at gmail.com
Fri Sep 10 12:09:15 EDT 2010
Hello,
I have a script that authenticates to a web service provider to
retrieve data. This script provides an authentication header built in
a very basic way like this:
<code>
# Creates an authentication object with the credentials for a given
URL
def createPasswordManager(headers) :
passwordManager = urllib2.HTTPPasswordMgrWithDefaultRealm()
passwordManager.add_password(None,overview_url,headers[0],headers[1])
return passwordManager
# Creates an authentication handler for the authentication object
created above
def createAuthenticationHandler(passwordManager) :
authenticationHandler =
urllib2.HTTPBasicAuthHandler(passwordManager)
return authenticationHandler
# Creates an opener that sets the credentials in the Request
def createOpener(authHandler) :
return urllib2.build_opener(authHandler)
</code>
This script makes multiple calls for data. I would like to trap an
exception for authentication failure so that it doesn't go through its
entire list of calls when there's a problem with the login. The
assumption is that if there is a login failure, the script is using
incorrect authentication information.
I have the call for data retrieval wrapped in try/except, to catch
HTTPError, but apparently no '401' is explicitly thrown when
authentication fails. And I don't see an explicit Exception that is
thrown in urllib2 for handling these failures.
How can I achieve my goal of trapping these exceptions and exiting
cleanly?
Thanks.
mp
More information about the Python-list
mailing list