为什么xmlrpc客户端无法将项目追加到可通过xmlrpc服务器过程访问的列表? [英] Why can't xmlrpc client append item to list accessable via xmlrpc server procedure?

查看:255
本文介绍了为什么xmlrpc客户端无法将项目追加到可通过xmlrpc服务器过程访问的列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

服务器代码(基于Python库参考):

Server code (based on Python library reference):

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()

客户端(解释器从另一个终端窗口启动):

Client (interpreter started from another terminal window):

>>> 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吗?

How do I fix this? Am I using xmlrpc improperly?

推荐答案

您的XMLRPC服务器出现故障,因为它无法封送None.您需要将allow_none=True添加到服务器构造函数中:

Your XMLRPC server is raising a fault since it cannot marshal None. You need to add allow_none=True to the server constructor:

server = SimpleXMLRPCServer(("127.0.0.1", 8000),
                        requestHandler=RequestHandler, 
                        allow_none=True)

这篇关于为什么xmlrpc客户端无法将项目追加到可通过xmlrpc服务器过程访问的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆