Savon Ruby Soap Client - невозможно правильно создать документ мыла - PullRequest
0 голосов
/ 20 октября 2011

Я признаю, что я новичок как в SOAP, так и в Savon, но у меня он работает с другим сервисом, но этот вводит меня в тупик.

WSDL здесь: http://stg -оптовая торговля.carsdirect.com / ws / services / Ping? WSDL

Документ по завершении должен выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <dealerPing xmlns="http://wholesale.carsdirect.com">
            <request>
                <partner>
                    <pricePlan>integer</pricePlan>
                    <id>integer</id>
                </partner>
                <vehicle>
                    <year>integer</year>
                    <make>string</make>
                    <model>string</model>
                    <trim>string</trim>
                </vehicle>
                <zipcode>integer</zipcode>
            </request>
        </dealerPing>
    </soap:Body>
</soap:Envelope>

Если кто-то может приблизиться к созданию такого документа, как этотили дайте мне несколько советов, я был бы очень признателен.

Я пытался сделать что-то вроде:

client = Savon::Client.new{|wsdl| wsdl.document = @cp.wsdl}
@response = client.dealer_ping do |soap|
  ...
end

Но я получил эту ошибку: неопределенный метод `dealer_ping 'для #

Я застрял на этом этапе.Мои знания обеих частей этого уравнения отсутствуют.

Спасибо.

1 Ответ

0 голосов
/ 21 октября 2011

У меня нет доступа к службе, поэтому я не могу попробовать, если она работает ... но это, вероятно, должно работать:

client = Savon::Client.new do
  wsdl.endpoint = "http://stg-wholesale.carsdirect.com/ws/services/Ping"
  wsdl.namespace = "http://wholesale.carsdirect.com"
end

client.request(:dealer_ping) do
  soap.body = {
    :request => {
      :partner => {
        :price_plan => 123,
        :id => 1222
      },
      :vehicle => {
        :year => 2010,
        :make => "Aston Martin",
        :model => "DBS",
        :trim => ""
      },
      :zipcode => 90245
    }
  }
end
...