(注意:我是SOAP的新手,因此可能会遗漏一些明显的东西)
我当前生成的请求如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://service.com/services/base" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<tns:someOperation>
<tns:suppliedParameterInstances>
<tns:paramName>param_name</tns:paramName>
<tns:instanceName>?</tns:instanceName>
<tns:value>Value</tns:value>
</tns:suppliedParameterInstances>
</tns:someOperation>
</soapenv:Body>
</soapenv:Envelope>
和来自已知工作请求的参考XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://service.com/services/base" xmlns:typ="http://type.service.com/types">
<soapenv:Header/>
<soapenv:Body>
<tns:someOperation>
<tns:suppliedParameterInstances>
<typ:paramName>param_name</typ:paramName>
<typ:instanceName>?</typ:instanceName>
<typ:value>"Value"</typ:value>
</tns:suppliedParameterInstances>
</tns:someOperation>
</soapenv:Body>
</soapenv:Envelope>
我确实有一个WSDL,但我不知道如何阅读它,以确定Savon是否应该选择&#34; ts&#34; /&#34; typ&#34;事情(而且它不是我的,所以我不能把它交给互联网)。天啊,我不太了解SOAP,知道如何命名这个问题....无论如何!我需要在Savon上戳,直到第一个XML看起来像第二个。我需要阅读的任何想法或事物名称?
答案 0 :(得分:0)
找到答案:Replicating XML Request with Savon/Ruby
&#34; GetList上的命名空间是正确的。你可能需要写的是
soap_client.call(:get_list,
:attributes => {'xmlns:b'=>'http://schemas.datacontract.org/'},
message: { 'ListRequest' => { 'tns:id' => 1 } }
这不是您问题的确切解决方案,因为我无法访问您的wsdl并且无法测试。但是你应该得到解决方案的关键。&#34;