我想通过XML-RPC导出一个Ruby框架。然而,当尝试从没有直接添加为XML-RPC服务器处理程序的类中调用方法时,出现了一些问题。请看下面我的示例:
我有一个测试Ruby XML-RPC服务器,如下所示:
require "xmlrpc/server"
class ExampleBar
def bar()
return "hello world!"
end
end
class ExampleFoo
def foo()
return ExampleBar.new
end
def test()
return "test!"
end
end
s = XMLRPC::Server.new( 9090 )
s.add_introspection
s.add_handler( "example", ExampleFoo.new )
s.serve
我有一个测试Python XML-RPC客户端,代码如下:
import xmlrpclib
s = xmlrpclib.Server( "http://127.0.0.1:9090/" )
print s.example.foo().bar()
我希望Python客户端输出“hello world!”因为它相当于以下Ruby代码:
example = ExampleFoo.new
puts example.foo().bar()
然而,它会生成一个错误:"xmlrpclib.ProtocolError: "。 print s.example.test() 可以正常工作。
我不希望新的ExampleBar对象通过网络传输,但我希望它在服务器端被“缓存”,并且后续对bar()的调用也能够被接受。
XML-RPC是否支持这种用法,还是太基础了?
因此,我的问题实际上是:如果不能使用XML-RPC,那么我该如何让它正常工作?