我正在使用Ruby(1.8.7)和SOAP4R(1.5.8)消费Web服务。Web服务具有名为"类型"的方法,我无法获得该值。
@driver=SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
result = @driver.GetJob(:jobid => "123")
puts "jobname is #{result.name}"
puts "jobtype is #{result.type}"
第四行给我"警告:对象#类型已弃用;使用对象#类"。我知道object.type被弃用。我想调用从Web服务获得的结果的"类型"方法。我不拥有Web服务,因此我无法更改它。
任何帮助。预先感谢。
类型方法可能是使用method_missing调用的,当方法存在于对象上时,此机制不起作用。如果是这样
class Object
undef_method :type
end
将此代码放在呼叫Web服务之前的某个地方,它应该起作用。
求解它正在升级为Ruby 1.9的另一种方法。类型方法消失了!
我会寻找一种允许您传递代表所需属性的符号的方法。它会像
puts "jobtype is #{result.some_method(:type)}"
或(较小的可能)
puts "jobtype is #{result.some_method("type")}"
@froderik的答案可能会帮助您解决一种特定方案,但是如果您想要的属性称为" class"或" send"或"初始化"怎么办?肥皂库将必须以某种方式处理此类情况,除非它的设计不好。
只是猜测,但是 result['type']
呢?或result[:type]
?