blob: d090d8dd664f1040fcc6162e5521d66538b2e729 [file] [log] [blame]
Fred Drakee486e0d2001-09-28 22:02:21 +00001\section{\module{SimpleXMLRPCServer} ---
2 Basic XML-RPC server}
3
4\declaremodule{standard}{SimpleXMLRPCServer}
5\moduleauthor{Brian Quinlan}{brianq@activestate.com}
6\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
7
8
9The \module{SimpleXMLRPCServer} module provides a basic server
10framework for XML-RPC servers written in Python. The server object is
11based on the \code{\refmodule{SocketServer}.TCPServer} class,
12and the request handler is based on the
13\code{\refmodule{BaseHTTPServer}.BaseHTTPRequestHandler} class.
14
15
16\begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
17 requestHandler\optional{, logRequests}}}
18 Create a new server instance. The \var{requestHandler} parameter
19 should be a factory for request handler instances; it defaults to
20 \class{SimpleXMLRPCRequestHandler}. The \var{addr} and
21 \var{requestHandler} parameters are passed to the
22 \class{\refmodule{SocketServer}.TCPServer} constructor. If
23 \var{logRequests} is true (the default), requests will be logged;
24 setting this parameter to false will turn off logging. This class
25 provides methods for registration of functions that can be called by
26 the XML-RPC protocol.
27\end{classdesc}
28
29
30\begin{classdesc}{SimpleXMLRPCRequestHandler}{}
31 Create a new request handler instance. This request handler
32 supports \code{POST} requests and modifies logging so that the
33 \var{logRequests} parameter to the \class{SimpleXMLRPCServer}
34 constructor parameter is honored.
35\end{classdesc}
36
37
38\subsection{SimpleXMLRPCServer Objects \label{simple-xmlrpc-servers}}
39
40The \class{SimpleXMLRPCServer} class provides two methods that an
41application can use to register functions that can be called via the
42XML-RPC protocol via the request handler.
43
44\begin{methoddesc}[SimpleXMLRPCServer]{register_function}{function\optional{,
45 name}}
46 Register a function that can respond to XML-RPC requests. The
47 function must be callable with a single parameter which will be the
48 return value of \function{\refmodule{xmlrpclib}.loads()} when called
49 with the payload of the request. If \var{name} is given, it will be
50 the method name associated with \var{function}, otherwise
51 \code{\var{function}.__name__} will be used. \var{name} can be
52 either a normal or Unicode string, and may contain characters not
53 legal in Python identifiers, including the period character.
54\end{methoddesc}
55
56\begin{methoddesc}[SimpleXMLRPCServer]{register_instance}{instance}
57 Register an object which is used to expose method names which have
58 not been registered using \method{register_function()}. If
59 \var{instance} contains a \method{_dispatch()} method, it is called
60 with the requested method name and the parameters from the request;
61 the return value is returned to the client as the result. If
62 \var{instance} does not have a \method{_dispatch()} method, it is
63 searched for an attribute matching the name of the requested method;
64 if the requested method name contains periods, each component of the
65 method name is searched for individually, with the effect that a
66 simple hierarchical search is performed. The value found from this
67 search is then called with the parameters from the request, and the
68 return value is passed back to the client.
69\end{methoddesc}