Savon:如何在SOAP请求的哈希体中指定自定义XML?

时间:2011-07-04 17:01:16

标签: ruby soap savon

在SOAP请求中,我需要指定具有不同值的重复键,如下所示:

soap.body = {:query => {
    :fields => {
        :string => 'Email',
        :string => 'FirstName',
        :string => 'LastName'
    }
}

使用此哈希,请求将形成:

<query><fields><string>LastName</string></fields></query>

最后一个:字符串对。所以,如果我把:

soap.body = {:query => {
    :fields => "<string>Email</string>FirstName<string></string>LastName<string></string>"
}

这将导致:

<fields>&lt;string&gt;Email&lt;/string&gt;&lt;string&gt;FirstName&lt;/string&gt;&lt;string&gt;LastName&lt;/string&gt;</fields>

有没有办法在哈希中得到这个?:

<query><fields><string>Email</string><string>FirstName</string><string>LastName</string></fields></query>

注意:我正在使用Ruby 1.8.7。

1 个答案:

答案 0 :(得分:1)

你的第一个代码不起作用,这不是Savon的错,哈希中的重复键只是被覆盖。你尝试过阵列吗?

soap.body = {
  :query => {
    :fields => {:string => ['Email', 'FirstName', 'LastName'],
  }
}

另请检查:https://github.com/rubiii/savon/issues/45