from twisted.web import server,xmlrpc,resource
functions = ['service1','service2','service3','service4']
class myXmlrpc(xmlrpc.XMLRPC):
global functions
def xmlrpc_funlist(self):
print 'funlist call'
return functions
def xmlrpc_service1(self,*args):
print 'service1 call'
print args
return [x + '_new' for x in args]
if __name__ == '__main__':
from twisted.internet import reactor
root = resource.Resource()
root.putChild("", myXmlrpc())
site = server.Site(root)
reactor.listenTCP(8088,site)
reactor.run()
client:
from twisted.web import xmlrpc
from twisted.internet import reactor
def mycallback(ret):
print ret
print type(ret)
print 'callback ok'
def service1callback(ret,*args):
print args
print ret
print 'myservice1 callback ok'
if __name__ == '__main__':
proxy = xmlrpc.Proxy("http://127.0.0.1:8088 ")
proxy.callRemote('funlist').addCallback(mycallback)
proxy.callRemote('service1','a','b','c').addCallback(service1callback).addCallback(lambda _:reactor.stop())
reactor.run()
如果使用soap模块,
替换XMLRPC为SOAPPublisher
替换xmlrpc.Proxy为soap.Proxy
替换xmlrpc_为soap_