为什么xmlrpc客户端无法通过xmlrpc服务器过程将项目附加到列表中?

服务器代码(基于Python库参考):
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler

class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ()

server = SimpleXMLRPCServer(("127.0.0.1", 8000),
                            requestHandler=RequestHandler)
server.register_introspection_functions()

l = list()

def say_hi():
    return 'hi !'

def append(event):
    l.append(event)

server.register_function(say_hi)
server.register_function(append)

server.serve_forever()
客户端(解释器从另一个终端窗口启动):
>>> from xmlrpc.client import ServerProxy
>>> s = ServerProxy('http://127.0.0.1', allow_none=True)
>>> s.say_hi()
'hi !'
>>> s.append(1)
Traceback (most recent call last):
...
xmlrpc.client.Fault(Fault 1: "<class 'TypeError'>:cannot
                    marshal None unless allow_none is enabled")
我该如何解决?我不正确地使用xmlrpc吗?     
已邀请:
您的XMLRPC服务器出现故障,因为它无法编组
None
。您需要将
allow_none=True
添加到服务器构造函数:
server = SimpleXMLRPCServer(("127.0.0.1", 8000),
                        requestHandler=RequestHandler, 
                        allow_none=True)
    
错误消息是自我说话。 append()返回None,除非编组,否则无法编组 你指定allow_none。 阅读错误消息和API文档 http://docs.python.org/library/simplexmlrpcserver.html 是你的朋友。     

要回复问题请先登录注册