7

我正在尝试使用 Savon 发出一些 SOAP 请求,但恐怕我需要超越基础知识。

我需要发送以下内容:

<env:Body>
  <wsdl:methodName>
    <parameter xsi:type='ValueClass'>value</parameter>
  </wsdl:methodName>
</env:Body>

现在,如果我不必指定 xsi:type,这将是一个简单的问题:

client.method_name { |soap| soap.body = {:parameter => 'value'} }

问题是参数中的 xsi:type ;由于我使用的 Web 服务是围绕多态构建的,我需要明确指定参数的类型。有什么办法可以做到这一点(最好不必生成我自己的 XML?)我真的很想永远放弃soap4r :)

谢谢!

4

1 回答 1

7

在 Hash 中指定 XML 属性非常难看,但有可能:

client.method_name do |soap|
  soap.body = {
    :parameter => 'value',
    :attributes! => { :parameter => { 'xsi:type' => ValueClass } }
  }
end

请看一下:http: //github.com/rubiii/savon/wiki/SOAP

在 Savon 支持 XML Schema Attributes 之前,我建议您使用Builder
(Savon 附带)来生成您的 XML:

client.method_name do |soap|
  xml = Builder::XmlMarkup.new
  soap.body = xml.parameter "value", "xsi:type" => "ValueClass"
end
于 2010-09-26T10:11:14.110 回答