Savon: How can I specify a custom XML in a hash body for a SOAP request?

六眼飞鱼酱① 提交于 2019-12-11 07:17:42

问题


In a SOAP Request, I need to specify repeated keys with different values like this:

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

With this hash, the request will be formed with:

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

The last :string pair. So if I put:

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

This will result in:

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

Is there a way to get this in a hash?:

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

Note: I'm using Ruby 1.8.7.


回答1:


Your first code cannot work and it's not Savon's fault, repeated keys in a hash are simply overriden. Did you try with an array?

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

Check also this: https://github.com/rubiii/savon/issues/45



来源:https://stackoverflow.com/questions/6574250/savon-how-can-i-specify-a-custom-xml-in-a-hash-body-for-a-soap-request

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!