Практический пример soap web-службы на php
Возвращающие текст SOAP-посланий. При рассмотрении полученных таким образом SOAP-посланий, явно виден обмен данными между клиентом и сервером. В случае запроса данные содержатся в приведенном ниже фрагменте кода. Данный фрагмент содержит тело SOAP-конверта, в которое вложен элемент, описывающий web-услугу. Создадим web-службу, которая предоставляет одну web-услугу, возвращающую клиенту результат… Читать ещё >
Практический пример soap web-службы на php (реферат, курсовая, диплом, контрольная)
Для создания SOAP web-службы на PHP прежде всего необходимо провести установку и настройку PHP, а также локального HTTP-сервера. В данном проекте был использован пакет XAMP, позволяющий провести быструю установку HTTP-сервера Apache и PHP.
Отдельно необходимо внести правки в конфигурационные файлы Apache и PHP.
В конфигурационном файле HTTP-сервера Apache httpd. conf необходимо найти приведенный ниже фрагмент кода:
Далее необходимо закомментировать строку «Deny from all», с помощью символа #.
Для запуска PHP-скриптов на локальном сервере необходимо хранить их в корневой директории сервера Apache, по умолчанию, папка htdocs в корневой папке Apache.
Для изменения корневой директории сайта необходимо внести изменения в файл httpd. conf в строку, приведенную ниже:
Для подключения поддержки PHP в файл httpd. conf необходимо внести следующие строки:
Для запуска HTTP-сервера Apache можно использовать консольные команды, либо контрольную панель XAMMP, позволяющую управлять состоянием Apache, а также проводить его конфигурацию.
Вид данной утилиты приведен на рисунке 2.
Рисунок 2. — Утилита XAMMP Control Panel:
Для создания SOAP web-службы необходимо написать PHP документы, реализующие клиентскую и серверную стороны приложения, а также WSDL-страницу, для описания web-сервиса.
Создадим web-службу, которая предоставляет одну web-услугу, возвращающую клиенту результат выполнения арифметической операции над двумя числами. Входными элементами являются два числа, задаваемые клиентом, а также символьная переменная, определяющая арифметическую операцию.
Клиентская сторона реализована двумя PHP-документами. В файле form. php при помощи элемента описана форма, в которую пользователь вводит данные. В свойствах формы прописан метод POST, применяемый для извлечения информации из формы и передачи ее в PHP-файл. В данном случае происходит передача введенных пользователем данных в afqk code.php. Элементы описывают текстовые поля для ввода данных и кнопку, при нажатии которой происходит передача данных в файл code.php.
Фрагмент кода, реализующий файл form. php, приведен ниже:
В файле code. php создается экземпляр класса клиента и происходит получение введенных пользователем данных и их отсылка в SOAP послании серверу. Фрагмент кода, реализующий создание экземпляра класса клиента приведен ниже:
В данном фрагменте создается экземпляр $client класса SoapClient, выполняющий SOAP-послание в соответствие с конфигурационным файлом cacl.wsdl.
В файле code. php также выполняется присвоение переменным $a, $b, $action значений членов ассоциативного массива $_POST, хранящего полученные из form. php данные.
Фрагмент кода, реализующий данные операции приведен ниже:
Далее выполняется запрос к серверу, содержащий значения переменных $a, $b, $action:
Где getCalcEntry () — описанная в WSDL-файле операция.
В данной web-службе роль серверной части играет файл calc-server.php.
В данном файле происходит объявление и вызов функции getCalcEntry.
Данная функция проверяет значение переменной $action, и в соответствии с ним выполняет операцию над переменными $a и $b, записывая результат в переменную $c. В данном фрагменте метод addFunction () предоставляет доступ к функции getCalcentry удаленному клиенту. Метод handle () выполянет обработку SOAP-запроса, вызов необходимых функций и посылку SOAP-ответа. Фрагмент кода, реализующий данную функцию, приведен ниже:
Важную роль в работе данной SOAP web-службы играет файл описания calc.wsdl.
В данном файле определены основные параметры SOAP-посланий. Фрагмент кода, отвечающий за реализацию этого, приведен ниже:
В данном фрагменте элементы getCalcRequest и getCalcResponse — SOAP-запрос и SOAP-ответ соответственно. В вложенных в элементах определены имена передаваемых переменных и их типы. Следует заметить, что возможна передача строк (тип string), которые будут преобразованы в числа неявно, благодаря динамической типизации в PHP. Также важным элементом WSDL-файла является описание интерфейса web-службы, выполняемое элементом .
В данном фрагменте элемент описывает конкретную услугу getCalcEntry, состоящую из двух действий:
- — первое действие getCalcRequest представляет отправку послания;
- — второе действие getCalcResponse — получение ответа.
Для успешной работы web-сервиса на локальном сервере необходимо:
- 1) Создать отдельную директорию для распределенного приложения в корневой директории сервера Apache. Поместить в нее файлы form. php, code. php, calc-server.php и calc. wsdl;
- 2) Запустить Apache, используя консоль либо контрольную панель XAMMP;
- 3) В адресной строке браузера ввести адрес клиента web-сервиса;
- 4) Ввести данные в текстовые поля и нажать кнопку Calculate;
- 5) В результате во вкладке браузера откроется PHP-страница с выведенным результатом вычислений.
Рисунок 3. — Результат работы модифицированной web-службы:
Для того, чтобы более подробно рассмотреть работу SOAP, модифицируем код файла code. php таким образом, что в браузер вместе с результатом вычисления будут выводиться листинги последних SOAP-посланий — запроса и ответа.
Фрагмент кода, выполняющий данные функции приведен ниже:
программирование web сервер Данный фрагмент содержит стандартные системные методы класса:
Возвращающие текст SOAP-посланий. При рассмотрении полученных таким образом SOAP-посланий, явно виден обмен данными между клиентом и сервером. В случае запроса данные содержатся в приведенном ниже фрагменте кода. Данный фрагмент содержит тело SOAP-конверта, в которое вложен элемент, описывающий web-услугу.
В него вложены элементы, хранящие значения передаваемых переменных и их типы данных. Серверу передаются значения чисел 5 и 3, а также символ выполняемой над ними операции вычитания.
Аналогичный фрагмент кода для ответа приведен ниже:
В данном фрагменте кода видно передаваемое клиенту значение результата вычитания — 2.