2011-03-23 101 views
1

我們試圖在RoR中使用SOAP Web服務。使用SOAP :: WSDLDriverFactory用下面的代碼:在RoR中使用SOAP Web服務

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

在得到服務的參數通過下面的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> 

但我不斷收到此錯誤:無不允許的:UCPTname

+0

您可以通過設置'proxy.wiredump_dev = $ stdout'來打開一個wiredump。然後,將SOAP請求與您所期望的進行比較。 – 2011-03-23 12:32:57

+0

謝謝。我認爲我的問題在於將這些XML結構轉換爲紅寶石哈希和/或數組,所以我可以將它作爲參數傳遞。 – 2011-03-23 13:09:57

回答

1

終於解決了,感謝proxy.wiredump_dev = $stdout,我能嗅探SOAP響應/請求。

上面的散列等同於XML是

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

我用Ruby這樣的小白!

+0

- 同樣在這裏 - 歡迎來到ruby noob club :) – 2011-03-24 10:43:32

0

未使用SOAP :: WSDLDriverFactory - 但我已經使用Savon

您是否有其他工作方式來調用該方法,例如soapUI

然後我使用類似Charles比較通過薩翁和的soapUI發送的消息,看看有什麼區別...

HTH,克里斯

+0

解決了它。感謝'proxy.wiredump_dev = $ stdout',我能夠嗅探SOAP響應。 – 2011-03-24 01:47:30