From 011097395b8198f0a0bdd57a4fafecf17d1288a4 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Sun, 12 Jan 2014 16:04:08 -0800 Subject: [PATCH] Issue #19082: Working SimpleXMLRPCServer and xmlrpclib examples, both in modules and documentation. --- Doc/library/simplexmlrpcserver.rst | 32 ++++++++++++++++++++++++++++++ Lib/SimpleXMLRPCServer.py | 1 + Lib/xmlrpclib.py | 15 ++++---------- Misc/NEWS | 3 +++ 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Doc/library/simplexmlrpcserver.rst b/Doc/library/simplexmlrpcserver.rst index 1dc68179c7..8f805e9307 100644 --- a/Doc/library/simplexmlrpcserver.rst +++ b/Doc/library/simplexmlrpcserver.rst @@ -197,6 +197,38 @@ server:: # Print list of available methods print s.system.listMethods() +The following :class:`SimpleXMLRPCServer` example is included in the module +`Lib/SimpleXMLRPCServer.py`:: + + server = SimpleXMLRPCServer(("localhost", 8000)) + server.register_function(pow) + server.register_function(lambda x,y: x+y, 'add') + server.register_multicall_functions() + server.serve_forever() + +This demo server can be run from the command line as:: + + python -m SimpleXMLRPCServer + +Example client code which talks to the above server is included with +`Lib/xmlrpclib.py`:: + + server = ServerProxy("http://localhost:8000") + print server + multi = MultiCall(server) + multi.pow(2, 9) + multi.add(5, 1) + multi.add(24, 11) + try: + for response in multi(): + print response + except Error, v: + print "ERROR", v + +And the client can be invoked directly using the following command:: + + python -m xmlrpclib + CGIXMLRPCRequestHandler ----------------------- diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py index f15cd62f4c..fcc3d2ea74 100644 --- a/Lib/SimpleXMLRPCServer.py +++ b/Lib/SimpleXMLRPCServer.py @@ -704,4 +704,5 @@ if __name__ == '__main__': server = SimpleXMLRPCServer(("localhost", 8000)) server.register_function(pow) server.register_function(lambda x,y: x+y, 'add') + server.register_multicall_functions() server.serve_forever() diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py index b93ea23b92..1a8b3fb431 100644 --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -1617,21 +1617,14 @@ Server = ServerProxy if __name__ == "__main__": - # simple test program (from the XML-RPC specification) - - # server = ServerProxy("http://localhost:8000") # local server - server = ServerProxy("http://time.xmlrpc.com/RPC2") + server = ServerProxy("http://localhost:8000") print server - try: - print server.currentTime.getCurrentTime() - except Error, v: - print "ERROR", v - multi = MultiCall(server) - multi.currentTime.getCurrentTime() - multi.currentTime.getCurrentTime() + multi.pow(2, 9) + multi.add(5, 1) + multi.add(24, 11) try: for response in multi(): print response diff --git a/Misc/NEWS b/Misc/NEWS index ddcf535fd8..6eee65c9a3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -35,6 +35,9 @@ Core and Builtins Library ------- +- Issue #19082: Working SimpleXMLRPCServer and xmlrpclib examples, both in + modules and documentation. + - Issue #13107: argparse and optparse no longer raises an exception when output a help on environment with too small COLUMNS. Based on patch by Elazar Gershuni. -- 2.50.1