• php

    Работа с веб-серверами на php посредством SOAP

    Не буду останавливаться на вопросе, что такое веб-сервисы и зачем они нужны. В сети очень много статей на эту тему. Просто постараюсь вкратце показать, каким простым способом возможно создание клиента к любому веб-сервису на 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(), которому в качестве аргументов передаются коды валют.

    И последнее – важно знать, что ожидать в качестве ответа: сколько значений, какого типа и т.п. Это также можно получить из описания.

    А в результате код получается очень простым и компактным, почти элементарным:

    // Использование 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 :)

    P.S. Написано для и опубликовано на www.phpworld.ru.

    Опубликовано: Категория: phpКомментарии: 2

    Комментарии (оставить комментарий)

    Комментарий
    Иван

    Леня, я тебе на почту кой-какие материалы скипнул, в продолжение темы, так сказать...

    Ответить

    19.02.2006

    Комментарий
    Леонид Лукин

    Спасибо! Я очень рад и уже все оперативно везде опубликовал!!!
    Будут еще материалы - присылай!!!

    Ответить

    19.02.2006

    Оставьте свой комментарий

    Ваше имя: Email: Оставьте свой email, если хотите получать уведомления о комментариях на этой странице. Ваш email не будет опубликован на сайте.