3
# server - RPC server address
4
# port - RPC server port
5
# creds - tuple of (username, password); give None if no HTTP-AUTH desired
6
# method - method name (most probably: package.function)
7
# args - method arguments
8
def xml_rpcall(server, port, creds, method, *args):
9
import xmlrpclib as xmlrpc
10
import httplib as http
13
headers = { "Content-Type": "text/xml" }
15
headers["Authorization"] = "Basic %s" % (base64.b64encode('%s:%s' % creds),)
16
body = xmlrpc.dumps(args, methodname = method)
18
server = http.HTTPSConnection(server, port)
19
server.request("POST", "/", body, headers)
20
resp = server.getresponse()
21
if resp.status >= 400:
22
raise xmlrpc.Fault("HTTP error %d (%s)" % (resp.status, resp.reason))
23
xml_resp = resp.read()
24
return xmlrpc.loads(xml_resp)[0][0]
26
# 'authenticated_example.reverse'
27
# 'public_example.sumAndDifference'
30
'localhost', 1638, ('nabla', 'nabla'),
31
'authenticated_example.reverse', 8, 20