Duh... you can pass allow_none=True to SimpleXMLRPCServer()....
On 9/12/07, Jeff McNeil <[EMAIL PROTECTED]> wrote: > Have a look at the XMLRPC specification @ http://www.xmlrpc.com/spec. > There is no representation of NULL/None, thus server refuses to > Marshall the 'None' value. Update your server methods to return a > value other than None and that message will go away. > > The other option is to set 'allow_none' to True on the Marshaller > object. Doing so will turn your 'None' return values into XML-RPC > '<nil/>' entities. The 'nil' type is defined as an XMLRPC extension > (I'm not sure how widely adopted it is, though). See > http://ontosys.com/xml-rpc/extensions.php. I'm not sure you can do > that without inheriting from the dispatcher code and "rolling your > own." > > I find it much easier to 'return True' and ignore the value. > > -Jeff > > On 9/12/07, xkenneth <[EMAIL PROTECTED]> wrote: > > So i've been trying to set up a simple server and client through > > XMLRPC in python. > > > > Here's my code: > > > > SERVER > > > > import SimpleXMLRPCServer > > > > > > class DataServer: > > def __init__(self): > > pass > > > > def test(self,test): > > self.this = test > > > > def show(self): > > print self.this > > > > server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8005)) > > server.register_instance(DataServer()) > > server.serve_forever() > > > > CLIENT > > import xmlrpclib > > server = xmlrpclib.Server('http://localhost:8005') > > server.test(5) > > server.show() > > > > > > Now, I'm getting the most odd callback from the client side: > > > > >>> server.show() > > Traceback (most recent call last): > > File "<stdin>", line 1, in ? > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/ > > lib/python2.4/xmlrpclib.py", line 1096, in __call__ > > return self.__send(self.__name, args) > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/ > > lib/python2.4/xmlrpclib.py", line 1383, in __request > > verbose=self.__verbose > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/ > > lib/python2.4/xmlrpclib.py", line 1147, in request > > return self._parse_response(h.getfile(), sock) > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/ > > lib/python2.4/xmlrpclib.py", line 1286, in _parse_response > > return u.close() > > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.4/ > > lib/python2.4/xmlrpclib.py", line 744, in close > > raise Fault(**self._stack[0]) > > xmlrpclib.Fault: <Fault 1: 'exceptions.TypeError:cannot marshal None > > unless allow_none is enabled'> > > > > What is causing this? The server recieves the data and seems to > > respond properly regardless of this error, so by all means i can > > always catch it, but that sounds stupid. > > > > Here I can verify the server process is indeed recieving the data > > (calling the client with two different values): > > > > localhost - - [12/Sep/2007 14:35:18] "POST /RPC2 HTTP/1.0" 200 - > > 5 > > localhost - - [12/Sep/2007 14:35:41] "POST /RPC2 HTTP/1.0" 200 - > > 10 > > > > Looking at the documentation: > > > > class SimpleXMLRPCServer( addr[, requestHandler[, > > logRequests[allow_none[, encoding]]]]) > > > > I'm not sure how to specify the allow_none value or it's type, how can > > i find out more? > > > > Thanks for the help! > > > > Regards, > > Ken > > > > -- > > http://mail.python.org/mailman/listinfo/python-list > > > -- http://mail.python.org/mailman/listinfo/python-list