Веб Дизайн - статьи


Как это работает - часть 2


...

С классом GetCursOnDateXML все достаточно очевидно. В его конструктор достаточно передать дату, что мы и делаем в строке 26 листинга get_curs.rb. Класс GetCursOnDateXMLResponse выглядит несколько сложнее. В нем определен метод getCursOnDateXMLResult который, судя по всему, и возвращает результат. Но в каком формате? Давайте заглянем в WSDL-файл и найдем там описание типа GetCursOnDateXMLResult: ... <s:element minOccurs="0" maxOccurs="1" name="GetCursOnDateXMLResult"> <s:complexType mixed="true"> <s:sequence> <s:any/> </s:sequence> </s:complexType> </s:element> ... Из этого фрагмента можно заключить, что GetCursOnDateXMLResult - это список "чего угодно" (s:any). В таких ситуациях на помощь приходит включение отладочного вывода (см. строку 23 листинга get_curs.rb) и irb - интерактивная консоль Ruby. При помощи irb можно наблюдать как исполняется код по мере его написания.

Итак, запускаем irb (из директории где находятся наши файлы), загружаем библиотеку SOAP4R и клиентские заглушки:

$ irb irb(main):001:0> require 'rubygems'

=> true

irb(main):002:0> require_gem 'soap4r'

=> true

irb(main):003:0> require 'defaultDriver.rb'

=> true

irb(main):004:0> Создаем объект-драйвер для работы с веб-сервисом и включаем отладочный вывод:

irb(main):004:0> serv = DailyInfoSoap.new

=> #<DailyInfoSoap:#<SOAP::RPC::Proxy:http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx>>

irb(main):005:0> serv.wiredump_dev = STDERR

=> #<IO:0xb7c4ff60>

irb(main):006:0> Далее создаем запрос с текущей датой и отправляем его на сервер:

irb(main):006:0> request = GetCursOnDateXML.new(DateTime.now)

=> #<GetCursOnDateXML:0xb76797d0 @on_date=#<DateTime: 70695916331796971/28800000000,1/6,2299161>>

irb(main):007:0> response = serv.getCursOnDateXML(request)

Wire dump:

= Request

! CONNECT TO www.cbr.ru:80 ! CONNECTION ESTABLISHED POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1 SOAPAction: "http://web.cbr.ru/GetCursOnDateXML" Content-Type: text/xml; charset=utf-8 User-Agent: SOAP4R/1.5.8 (/187, ruby 1.8.6 (2007-03-13) [i586-linux-gnu]) Date: Tue, 09 Sep 2008 19:36:45 GMT Content-Length: 405 Host: www.cbr.ru




- Начало -  - Назад -  - Вперед -



Книжный магазин