import sys # change this line to point to somewhere where xmlrpclib can be # imported from! sys.path.insert(0, '/home/chrism/sandboxes/2_3Branch/lib/python') import xmlrpclib import base64 import string def Server(url, username, password): t = BasicAuthTransport(username, password) return xmlrpclib.Server(url, t) class BasicAuthTransport(xmlrpclib.Transport): """Handles an HTTP transaction to an XML-RPC server with basicauth """ def __init__(self, username, password): self.username = username self.password = password def request(self, host, handler, request_body): # issue XML-RPC request username = self.username password = self.password import httplib h = httplib.HTTP(host) h.putrequest("POST", handler) # required by HTTP/1.1 h.putheader("Host", host) # required by XML-RPC h.putheader("User-Agent", self.user_agent) h.putheader("Content-Type", "text/xml") h.putheader("Content-Length", str(len(request_body))) # basic auth if username and password: h.putheader("AUTHORIZATION", "Basic %s" % string.replace( base64.encodestring("%s:%s" % (username, password)), "\012", "")) h.endheaders() if request_body: h.send(request_body) errcode, errmsg, headers = h.getreply() if errcode != 200: raise ProtocolError( host + handler, errcode, errmsg, headers ) return self.parse_response(h.getfile()) def test(): s = Server('http://serenade.digicool.com:8083/', 'user1', 'mypass') print s.testmethod() if __name__ == '__main__': test()