Лабораторная работа: Технологія SOAP
· Отримання опису інтерфейсу сервера;
· Написання коду виклику методів сервера.
У разі розробки сервера на Delphi існує модуль з описом інтерфейсу сервера на мові Object Pascal , т.ч перший етап може бути пропущений. У випадку якщо сервер був розроблений із використанням інших мов або модуль з описом інтерфейсу недоступний, необхідно одержати опис інтерфейсу у форматі WSDL або XML . Перший варіант – це попросити файл з описом у розроблювача, другий - згенерувати опис самому. Для цього досить запустити Web-браузер і в рядку адреси набрати команду: http://<ім’я сервера>/<папка Scripts>/< ім’я прикладення-сервера>/wsdl. У даному прикладі сервер розташовано на локальному комп’ютері, як Web-сервер IIS , тому рядок адреси виглядає так: http://localhost/Scripts/SOAPServerProject.exe/wsdl. При цьому на екран буде виведена таблиця з описом інтерфейсів сервера (мал. 7 ).
Малюнок 7
Необхідно обрати в таблиці інтерфейс IEncodeDecode , що цікавить нас, при цьому буде згенеровано опис інтерфейсу у форматі XML:
<?xml version="1.0" encoding="utf-8" ?>
-<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="IEncodeDecodeservice" targetNamespace="http://tempuri.org/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
-<message name="EuroToUk0Request">
<partname="Value" type="xs:double" />
</message>
-<message name="EuroToUk0Response">
<partname="return" type="xs:double" />
</message>
-<message name="UkToEuro1Request">
<partname="Value" type="xs:double" />
</message>
-<message name="UkToEuro1Response">
<partname="return" type="xs:double" />
</message>
-<portType name="IEncodeDecode">
-<operation name="EuroToUk">
<inputmessage="tns:EuroToUk0Request" />
<outputmessage="tns:EuroToUk0Response" />
</operation>
-<operation name="UkToEuro">
<inputmessage="tns:UkToEuro1Request" />
<outputmessage="tns:UkToEuro1Response" />
</operation>