小编Pau*_* S.的帖子

使用 SAVON response.to_hash 转换方法解析 SOAP 响应

我在解析 SOAP 响应时遇到问题。

这是我的代码:

require 'rubygems'
require 'savon'

client = Savon::Client.new "http://1.2.3.4/xyz/abcd/fsds.wsdl"

res = client.query_unpaid_assesments do |soap,wsse|
  soap.namespaces["xmlns:SOAP-ENV"] = "http://schemas.xmlsoap.org/soap/envelope/"
  soap.namespaces["xmlns:xsi"] = "http://www.w3.org/2001/XMLSchema-instance"
  soap.namespaces["xmlns:xsd"] = "http://www.w3.org/2001/XMLSchema"

  wsse.username="xyz"
  wsse.password="123"

  soap.body = {:orderNumber => 111222333 }
end

response = Savon::Response#to_hash
hres = response.to_hash 
all_data = hres[:response][:asses_data][:date][:amount][:assesReference][:year][:cusOffCode][:serie][:number][:date][:time]
Run Code Online (Sandbox Code Playgroud)

这是我遇到的错误:

Savon::Response:Class 的未定义方法to_hash(NoMethodError)

“res”给了我 xml 响应,我想在哈希中得到它。

我阅读了之前的相关问题,他们建议使用 response.to_hash ,我这样做了并且抛出了上面指定的错误。我怎样才能摆脱这个错误并将我的响应放入哈希中。

谢谢你的帮助

我忘记发布我想要解析的 xml 响应的正文:

<soapenv:Body>
<response>
<ns203:assesData xmlns:ns203="http://asdfsd.sdfsd.zbc.org">
<ns203:date>2010-09-01</ns203:date>
<ns203:amount>34400</ns203:amount>
<ns203:asesReference>
    <ns203:year>2010</ns203:year>
    <ns203:cusOffCode>098</ns203:customsOfficeCode>
    <ns203:serie>F</ns203:serie>
    <ns203:number>524332</ns203:number>
    <ns203:date>2010-11-11</ns203:date>
    <ns203:time>10:11:103</ns203:time>
</ns203:assesReference>
</ns203:assesData>
</response>
</soapenv:Body>
Run Code Online (Sandbox Code Playgroud)

ruby soap savon

5
推荐指数
1
解决办法
7966
查看次数

标签 统计

ruby ×1

savon ×1

soap ×1