在RoR中使用SOAP Web服务

时间:2011-03-23 12:05:02

标签: ruby-on-rails soap wsdl

我们正在尝试在RoR中使用SOAP Web服务。使用SOAP :: WSDLDriverFactory和以下代码:

  wsdl = SOAP::WSDLDriverFactory.new("http://<domain>/WSDL/v4.0/iLON100.WSDL")
  proxy = wsdl.create_rpc_driver
  proxy.get({:iLonItem => [{:Item => {:UCPTname => "Net/LON/Motion406"}}]})

get服务上的参数通过以下XML表示:

<Get xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
  <iLonItem>
    <Item xsi:type="LON_Network_Cfg">
      <UCPTname>MyNetwork</UCPTname>
    </Item>
  </iLonItem>
</Get>

但我一直收到此错误: nil不允许:UCPTname

2 个答案:

答案 0 :(得分:1)

最后解决了它,感谢proxy.wiredump_dev = $stdout,我能够嗅探SOAP响应/请求。

上面xml上的哈希等价物是

{:iLonItem => 
  {:Item => [{:UCPTname => 'Net/LON/Motion406'}]}
}

我是Ruby中的一个菜鸟!

答案 1 :(得分:0)

未使用SOAP :: WSDLDriverFactory - 但我使用了Savon

您是否有其他/工作方式来调用该方法,例如soapUI

然后我使用Charles之类的东西来比较通过Savon和soapUI发送的消息,看看有什么不同......

HTH,Chris