8

我无法更改正在构建的 SOAP xml 的命名空间。我不确定如何将 "xmlns:env=" 更改为 "xmlns:soapenv=" 和 "xmlns:tns=" 更改为 "xmlns:web="

我正在尝试构建的内容:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:web="http://www.webserviceX.NET/">
    <soapenv:Header/>
    <soapenv:Body>
         <web:ConvertTemp>
             <web:Temperature>100</web:Temperature>
             <web:FromUnit>degreeCelsius</web:FromUnit>
             <web:ToUnit>degreeFahrenheit</web:ToUnit>
         </web:ConvertTemp>
    </soapenv:Body>
</soapenv:Envelope>

我目前得到的

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://www.webserviceX.NET/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <env:Body>
      <tns:ConvertTemp>
         <tns:temperature>100</tns:temperature>
         <tns:fromUnit>degreeCelsius</tns:fromUnit>
         <tns:toUnit>degreeFahrenheit</tns:toUnit>
      </tns:ConvertTemp>
   </env:Body>
</env:Envelope>

我的代码:

client = Savon.client(wsdl: "http://www.webservicex.net/ConvertTemperature.asmx?WSDL")
message = { temperature: '100',FromUnit: 'degreeCelsius' , ToUnit: 'degreeFahrenheit'}
response = client.call(:convert_temp, message: message)

谢谢您的帮助。

4

1 回答 1

18

我能够弄清楚如何改变这些。如果有人有兴趣改变这些的方法是:

client = Savon.client(env_namespace: :soapenv,namespace_identifier: :web)

不过,这实际上并没有引起我的问​​题。事实证明,我的田野在我没有注意到的情况下被骆驼化了。“FromUnit”变成了“fromUnit”。

于 2013-10-01T17:07:42.173 回答