具有名为 "type" 的方法的 Web 服务。如何使用红宝石食用?



我正在使用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]

相关内容

  • 没有找到相关文章

最新更新