0
我不明白那些喜歡薩翁的人喜歡Soap4r。如何處理薩翁響應?
如何在薩翁響應中獲取返回對象的屬性?用soap4r就像調用getter一樣乾淨!
顯然,在薩翁我需要明確解析響應並行走response_hash。這比soap4r方法更糟糕。我錯了,還是薩翁只是質量較差的soap4r?
編輯:這個問題是由於savon沒有正確支持multi_ref響應,正如答案評論中所述。
我不明白那些喜歡薩翁的人喜歡Soap4r。如何處理薩翁響應?
如何在薩翁響應中獲取返回對象的屬性?用soap4r就像調用getter一樣乾淨!
顯然,在薩翁我需要明確解析響應並行走response_hash。這比soap4r方法更糟糕。我錯了,還是薩翁只是質量較差的soap4r?
編輯:這個問題是由於savon沒有正確支持multi_ref響應,正如答案評論中所述。
從https://github.com/raldred/savon/blob/master/lib/savon/response.rb
# You can also let Savon translate the SOAP response body to a Hash.
#
# response.to_hash
# => { :findUserByIdResponse => {
# => :id => "123",
# => :username => "eve"
# => :active => true
# => }
所以,你應該能夠調用哈希[:對象]這將返回屬性。
你不需要走響應對象只是調用to_hash。
問題是,當我試圖做到這一點時,我收到了一個非常奇怪的值,看起來像「#idN」高度嵌套的散列。試圖做一些像response.companyId這樣簡單的事情將會很複雜,不足以理解該屬性的值存在於散列中。如果我沒有錯,最接近我的是響應[:meta_refs] [:companyId],返回類似「#id3」的東西。 – 2011-06-03 09:52:26
在Soap4r response.companyId只是作品!也許我給savon提供了錯誤的參數,因此無法以適當的方式處理響應。因爲我不知道命名空間應該是什麼,我只是做了一些像Client.new {wsdl.document =「wsdl的路徑」} – 2011-06-03 09:52:48
也許查看文檔,您的響應對象應該用散列如果您在客戶端使用正確的參數。 – 2011-06-03 20:29:04