2013-10-01 4 views
4

У меня возникли проблемы с изменением пространства имен для XML-файла SOAP, который я создаю. Я не уверен, как изменить "Xmlns: ENV =" на "Xmlns: soapenv =" и "Xmlns: ТНС =" на "XMLNS: веб ="Ruby/Savon: возникли проблемы с пространством имен для запроса на мыло

Я пытаюсь построить:

<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) 

Спасибо за помощь.

ответ

11

Я смог выяснить, как их изменить. Если кому-то интересно, это можно изменить следующим образом:

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

Это на самом деле не вызывало моей проблемы. Оказывается, мои поля были на верблюдах, и я не заметил. «FromUnit» стал «fromUnit».

+0

У меня такая же проблема с камнем с мылом, можете ли вы объяснить, как вы это решили? –

+1

Добавьте это к вашему clientconvert_request_keys_to:: none, –

 Смежные вопросы

  • Нет связанных вопросов^_^