Here's the open function for HttpAuthenticated.
 
class HttpAuthenticated(HttpTransport):
    """
    Provides basic http authentication for servers that don't follow
    the specified challenge / response model.  This implementation
    appends the I{Authorization} http header with base64 encoded
    credentials on every http request.
    """
    def open(self, request):
        credentials = self.credentials()
        theurl = request.url
        username = credentials[0]
        password = credentials[1]
        passman = u2.HTTPPasswordMgrWithDefaultRealm()
        passman.add_password(None, theurl, username, password)
        authhandler = u2.HTTPBasicAuthHandler(passman)
        opener = u2.build_opener(authhandler)
        u2.install_opener(opener)
        return HttpTransport.open(self, request)
 


 
On Mon, Dec 21, 2009 at 2:16 PM, Ryan Schroeder <ryanitus@gmail.com> wrote:
Hello,
 
I have a server that requires basic HTTP authentication to download the WSDL file.  I tried setting the transport to HTTPAuthenticated, but it looks like the Client doesn't apply the options.transport when opening the url.
 
Here's the snippet I'm referring to from client.py:
 
    def __init__(self, url, **kwargs):
        """
        @param url: The URL for the WSDL.
        @type url: str
        @param kwargs: keyword arguments.
        @see: L{Options}
        """
        options = Options()
        options.transport = HttpAuthenticated()
        self.options = options
        options.cache = FileCache(days=1)
        self.set_options(**kwargs)
        self.wsdl = Definitions(url, options)           <-------------- shouldn't this be self.options?
 
 
I tried making this change, but also ran into the fact that the HttpAuthenticated class does not override the open method using a provided username and password.  The basic HttpTransport open method is called instead.
 
Regards,
 
Ryan