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(a)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