Background

I'm building a SOAP client with python 2.7.3 and using the suds 0.4.1 library provided by Canonical. The server is using basic authentication over HTTPS.

Problem

Can't pass authentication on the server, even to get at the WSDL. I get the following error:

suds.transport.TransportError: HTTP Error 401: Unauthorized

Attempts at resolution and code

I have tried both of the authentication methods described in the suds documentation, but still get the error above at the client = Client(url, ...) line. I've confirmed the credentials and ability to connect in a web browser, which works fine.

After declaring wsdl_url, username and password, I tried:

client = Client(url=wsdl_url, username=username, password=password)

# as well as:

t = HttpAuthenticated(username=username, password=password)
client = Client(url=wsdl_url, transport=t)

# and even:

t = HttpAuthenticated(username=username, password=password)
t.handler = urllib2.HTTPBasicAuthHandler(t.pm)
t.urlopener = urllib2.build_opener(t.handler)
client = Client(url=wsdl_url, transport=t)

That last one seems to, at least, get a response from the WSDL URL in another question about HTTP authentication with suds.

Other notes

This question is distinct from this similar question because I am using:

from suds.transport.https import HttpAuthenticated
# not:
# from suds.transport.http import HttpAuthenticated

and from the Traceback, the client = Client(url, ...) call clearly hits suds.tran

Edit
Report