Не буду останавливаться на вопросе, что такое веб-сервисы и зачем они нужны. В сети очень много статей
на эту тему. Просто постараюсь вкратце показать, каким простым способом
возможно создание клиента к любому веб-сервису на php.
Настройка
Для использования SOAP в php необходимо подключить
модуль SOAP (входит в дистрибутив php5). Под windows это делается просто –
необходимо дописать (именно дописать, так как эта строка там не просто
закомментирована, она отсутствует вообще) в php.ini:
extension=php_soap.dll
Не забудьте перезапустить сервер,
если php у вас установлен как модуль.
Создание SOAP-клиента по WSDL-документу
Создание SOAP-клиента обычно происходит по WSDL-документу, который представляет собой XML-документ в
определенном формате, полностью описывающий тот или иной веб-сервис. За
подробностями по поводу WSDL – отправляю Вас на сайт консорциума W3C - http://www.w3.org/TR/2005/WD-wsdl20-soap11-binding-20050510/.
Главное же, что необходимо знать для того, чтобы построить клиента
к веб-сервису – это знать URL его WSDL-документа.
Для примера возьмем
веб-сервис "Currency Exchange Rate" от xmethods.com. Адрес этого
веб-сервиса, который позволяет получать курсы валют в режиме онлайн - http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl.
Второй важный момент – из описания веб-сервиса необходимо получить
информацию о том, какие методы этот сервис предоставляет, и какие
параметры мы должны передавать ему в качестве входных значений (очень
похоже на вызов обычной функции php или метода класса). Обычно эта
информация содержится в описании сервиса на его сайте. Наш веб-сервис для
получения курса валют предоставляет метод getRate(), которому в качестве
аргументов передаются коды валют.
И последнее – важно знать,
что ожидать в качестве ответа: сколько значений, какого типа и т.п. Это
также можно получить из описания.
А в результате код получается очень
простым и компактным, почти
элементарным:
<?php
// Использование
Web-сервиса
// "Currency Exchange Rate" от
xmethods.com
// Создание SOAP-клиента по
WSDL-документу
$client = new SoapClient("http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl");
//
Поcылка SOAP-запроса и получение
результата
$result =
$client->getRate("us", "russia");
echo ‘Текущий курс доллара: ’, $result, ‘ рублей’;
?>
Как видно из кода в конструктор класса SoapClient необходимо передать
URL WSDL-документа и получить объект для работы с нужным веб-сервисом.
Затем вызывается метод этого объекта, имя которого совпадает с именем
самого метода веб-сервиса. Возвращает же этот метод желаемый нами
результат.
Итак, этот простой пример иллюстрирует нам принцип
построения SOAP-клиента для веб-сервисов на php. Однако в реальном
приложении еще о многом придется позаботиться, в частности о том, что в
момент обращения к веб-сервису он может быть временно недоступен или
возвращать ошибку. Явно напрашивается использование блока try/catch/throw :-)