Практикум
Работа с веб сервисами
Задание
Задачей данного занятия является использование веб-сервиса Аэрофлота для создания приложения Silverlight, дающего возможность просматривать авиа рейсы прибывающие и вылетающие для заданного аэропорта мира и на заданную дату. Задача состоит из этапов:
- Создание нового проекта Silverlight
- Подключение к веб-сервису из приложения Silverlight по адресу в Интернете http://webservices.aeroflot.ru/flightstatus.asmx?WSDL
- Создание элементов управления
- ComboBox - для отображения списка аэропортов
- ComboBox - для отображения списка дат, на которые доступна информация о рейсах
- Button - кнопка начала поиска
- DataGrid - табличный элемент управления для отображения вылетающих рейсов
- DataGrid - табличный элемент управления для отображения прибывающих рейсов
- TextBlock - для подписей к DataGrid
- Асинхронный запрос к веб-сервису для получения списка аэропортов
- Асинхронный запрос к веб-сервису для получения списка дат
- Асинхронный запрос к веб-сервису для получения списка вылетающих рейсов
- Асинхронный запрос к веб-сервису для получения списка прибывающих рейсов
- Отображение данных списков в соответствующих элементах управления
Для выполнения данной работы необходимо установленное программное обеспечение (см. "Обзор современных средств разработки интерактивных приложений" "Введение"), а также, доступ в Интернет.
Описание веб-сервиса "Справка о рейсе/Табло аэропортов"
Данный сервис позволяет получать информацию о текущем состоянии рейсов, просматривать табло аэропортов. Сервис предоставляет следующий набор функций:
- AirportList - список аэропортов
- AirportInfo - информация об аэропорте по его коду
- DateList - список дат, за которые есть информация
- Arrival/Departure - информация о прибытии/отправлении рейсов
- FlightSearch - поиск рейса по номеру
- FlightInfo - подробная информация о текущем состоянии рейса (по ключу, полученному в результате вызова Arrival/Departure/FlightSearch ).
AirportList - Список аэропортов. Возвращается список структур, состоящих из следующих полей:
- city - город
- name - название аэропорта
- code - код аэропорта
AirportInfo - Информация об аэропорте. Входные параметры:
- code - код аэропорта
Возвращается структура, состоящая из следующих полей:
- city - город
- name - название аэропорта
- code - код аэропорта
Arrival - Табло прилета. Входные параметры:
- code - код аэропорта
- date - дата
- order_field - поле (' airport ', ' sched ', ' plan ', ' company ', ' flight_no '), по которому идет сортировка
- order - направление сортировки (' desc ', ' asc ')
Возвращается список структур, состоящих из следующих полей:
- flt_pk - код рейса
- company - код авиакомпании
- flight_no - номер рейса
- airport_inter - название промежуточного аэропорта
- airport - название аэропорта отправления
- sched - время прибытия по расписанию
- plan - планируемое время прибытия
- fact - фактическое время прибытия
- calc - расчетное время прибытия
- estimated arrival time
- real - время посадки
- union_flight_no - номер, объединенного рейса
- status - статус рейса
DateList - Список дат, за которые есть данные в системе
Departure - Табло вылета. Входные параметры:
- code - код аэропорта
- date - дата
- order_field - поле (' airport ', ' sched ', ' plan ', ' company ', ' flight_no '), по которому идет сортировка
- order - направление сортировки (' desc ', ' asc ')
Возвращается список структур, состоящих из следующих полей:
- flt_pk - код рейса
- company - код авиакомпании
- flight_no - номер рейса
- airport_inter - название промежуточного аэропорта
- airport - название аеропорта назначения
- sched - время вылета по расписанию
- plan - планируемое время вылета
- fact - фактическое время вылета
- real - время взлета
- union_flight_no - номер, объединенного рейса
- status - статус рейса
- is_check - признак регистрации ( 1 - идет, 0 - нет)
- is_board - признак посадки в самолет ( 1 - идет, 0 - нет)
FlightInfo - Подробная информация о рейсе. Входные параметры:
- flt_pk - код рейса
Возвращается список структур, состоящих из следующих полей:
- company - код авиакомпании
- flight_no - номер рейса
- flight_type - тип рейса
- aircraft_type - тип самолета
- bort - номер самолета (борта)
- seats_f - количество мест первого класса
- seats_c - количество мест бизнес-класса
- seats_y - количество мест эконом-класса
- sched_dep - время вылета по расписанию
- sched_arr - время прибытия по расписанию
- plan_dep - планируемое время вылета
- plan_arr - планируемое время прибытия
- fact_dep - фактическое время вылета
- fact_arr - фактическое время прибытия
- real_dep - время взлета
- real_arr - время посадки
- calc - расчетное время прибытия
- status - статус рейса
- city_dep - город отправления
- airport_dep - название аеропорта отправления
- code_dep - код аэропорта отправления
- terminal_dep - номер терминала аэропорта отправления
- city_arr - город назначения
- airport_arr - название аеропорта назначения
- code_arr - код аэропорта назначения
- terminal_arr - номер терминала аэропорта назначения
FlightSearch - Поиск рейсов. Входные параметры:
- flight_no - номер рейса
- flight number
Возвращается список структур, состоящих из следующих полей:
- flt_pk - код рейса
- company - код авиакомпании
- flight_no - номер рейса
- airport_dep - название аэропорта отправления
- airport_inter - название промежуточного аэропорта
- airport_arr - название аеропорта назначения
- sched_dep - время вылета по расписанию
Адрес данного веб-сервиса:
http://webservices.aeroflot.ru/flightstatus.asmx?WSDL
Создание приложения Silverlight и подключение к веб-сервису
Теперь создадим приложение Silverlight, а также веб-приложение для отображения приложения Silverlight. Для этого последовательно выполняем шаги, изображенные на рис.5.1 - рис. 5.4. В Visual Studio 2008 создаем новый проект, указываем шаблон "Silverlight Application", вводим название и каталог будущего проекта.
Во время работы мастера отвечаем на вопрос, где будет "хоститься" новое приложение. Указываем, что на новом веб-сервере. Visual Studio создаст по шаблону простейшее веб-приложение ASP.NET и разместит на его странице необходимые ссылки на приложение Silverlight.
В результате работы мастера Visual Studio будет создано решение (см. рис.5.3)
Далее кликаем на проекте Silverlight правой клавишей мыши и выбираем "Add Service Reference". В поле "Address" вводим адрес веб-сервиса в интернете: http://webservices.aeroflot.ru/flightstatus.asmx?WSDL. Сразу увидим контракт, предлагаемый веб-сервисом. Вводим пространство имен для данной ссылки.