【发布时间】:2008-11-05 01:33:50
【问题描述】:
我正在尝试通过 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,我怎样才能让它工作?
【问题讨论】:
标签: python ruby xml-rpc interop