我正在尝试使用Savon来提出一些SOAP请求,但我担心我需要超越基础知识.
我需要发送以下内容:
<env:Body>
<wsdl:methodName>
<parameter xsi:type='ValueClass'>value</parameter>
</wsdl:methodName>
</env:Body>
Run Code Online (Sandbox Code Playgroud)
现在,如果我不必指定xsi:type,那将是一个简单的问题:
client.method_name { |soap| soap.body = {:parameter => 'value'} }
Run Code Online (Sandbox Code Playgroud)
问题是参数中的xsi:type; 由于我使用的Web服务是围绕多态构建的,我需要明确指定参数的类型.有什么方法可以做到这一点(最好不必生成我自己的XML?)我真的很想放弃soap4r :)
谢谢!
在Hash中指定XML属性非常难看,但它可能是:
client.method_name do |soap|
soap.body = {
:parameter => 'value',
:attributes! => { :parameter => { 'xsi:type' => ValueClass } }
}
end
Run Code Online (Sandbox Code Playgroud)
请查看: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
Run Code Online (Sandbox Code Playgroud)