我正在尝试通过 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: <ProtocolError for 127.0.0.1:9090/: 500 Internal Server Error>”。
print s.example.test() 工作正常。
我不希望新的 ExampleBar 对象通过网络,但我希望它被“缓存”在服务器端,并且随后对 bar() 的调用得到尊重。
XML-RPC 可以支持这种用法还是太基础了?
所以我想我的问题真的是;如果不使用 XML-RPC,我怎样才能使它工作?