~tieto/+junk/xmlrpcd

« back to all changes in this revision

Viewing changes to xmlrpcaller.py

  • Committer: Stanislaw Klekot
  • Date: 2010-11-29 09:14:46 UTC
  • Revision ID: git-v1:4d535fd081258c7f54eedc478d909283680e25d6
Moved all examples to examples/ subdir.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
 
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
11
 
  import base64
12
 
 
13
 
  headers = { "Content-Type": "text/xml" }
14
 
  if creds != None:
15
 
    headers["Authorization"] = "Basic %s" % (base64.b64encode('%s:%s' % creds),)
16
 
  body = xmlrpc.dumps(args, methodname = method)
17
 
 
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]
25
 
 
26
 
# 'authenticated_example.reverse'
27
 
# 'public_example.sumAndDifference'
28
 
 
29
 
print xml_rpcall(
30
 
  'localhost', 1638, ('nabla', 'nabla'),
31
 
  'authenticated_example.reverse', 8, 20
32
 
)
33
 
 
34
 
# vim:ft=python