Ruby Savon: убрать действие мыла из запроса - PullRequest
1 голос
/ 08 ноября 2011

Я использую Savon :: Model для отправки запроса SOAP.

Конечный результат, который мне нужен, выглядит следующим образом:

<env:Body>
  <ins0:ValidateCityPostalCodeZipRequest>
    <ins0:Addresses>
      <ins0:ShortAddress>
        <ins0:City>Toronto</v1:City>
        <ins0:Province>ON</v1:Province>
        <ins0:Country>CA</v1:Country>
        <ins0:PostalCode>L4Y1K7</v1:PostalCode>
      </ins0:ShortAddress>
    </ins0:Addresses>
  </ins0:ValidateCityPostalCodeZipRequest>
</env:Body>

Мой WSDL содержит только операцию с именем: ValidateCityPostalCodeZip и принимает в качестве параметра тип объекта ValidateCityPostalCodeZipRequest.

Когда я пытаюсь отправить запрос в виде кода:

  validate_city_postal_code_zip do
    soap.header = {
      "ins0:RequestContext" => {
        "ins0:Version" => "1.0",
        "ins0:Language" => "en",
        "ins0:GroupID" => "11",
        "ins0:RequestReference" => "UserRef"
      }
    }
    soap.body = {
      "ins0:Addresses" => {
        "ins0:ShortAddress" => {
          "ins0:City" => city,
          "ins0:Province" => province,
          "ins0:Country" => country,
          "ins0:PostalCode" => postal_code
        }
      }
    }
  end

Полученный мной отформатированный запрос SOAP

 <env:Body>
      <wsdl:ValidateCityPostalCodeZip>
           <ins0:Addresses>
                <ins0:ShortAddress>
                     <ins0:City>te</ins0:City>
                     <ins0:Province>te</ins0:Province>
                     <ins0:Country>te</ins0:Country>
                     <ins0:PostalCode>te</ins0:PostalCode>
                </ins0:ShortAddress>
           </ins0:Addresses>
      </wsdl:ValidateCityPostalCodeZip>
 </env:Body>

Что вызвало ошибку у вызывающего, вот выдержка из возвращенного сообщения:

SOAP response (status 200):
[...]
<Errors>
    <Error>
        <Code>3001116</Code>
        <Description>Service Failed</Description>
        <AdditionalInformation i:nil="true"/>
    </Error>
</Errors>

Как можно изменить имя операции?

Спасибо

...