Робота з веб-серверами на php за допомогою soap

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

Не буду зупинятися на питанні, що таке веб-сервіси і навіщо вони потрібні. У мережі дуже багато статей на цю тему. Просто постараюся коротко показати, яким простим способом можливе створення клієнта до будь-якого веб-сервісу на php.

Не забудьте перезапустити сервер, якщо php у вас встановлений як модуль.

Створення SOAP-клієнта по WSDL-документа

Другий важливий момент - з опису веб-сервісу необхідно отримати інформацію про те, які методи цей сервіс надає, і які параметри ми повинні передавати йому в якості вхідних значень (дуже схоже на виклик звичайної функції php або методу класу). Зазвичай ця інформація міститься в описі сервісу на його сайті. Наш веб-сервіс для отримання курсу валют надає метод getRate (), якому в якості аргументів передаються коди валют.

І останнє - важливо знати, що очікувати в якості відповіді: скільки значень, якого типу і т.п. Це також можна отримати з опису.
А в результаті код виходить дуже простим і компактним, майже елементарним:

// Поcилка SOAP-запиту і отримання результату
$ Result = $ client-> getRate ( "us", "russia");

echo 'Поточний курс долара:', $ result, 'рублів';
?>

Як видно з коду в конструктор класу SoapClient необхідно передати URL WSDL-документа і отримати об'єкт для роботи з потрібним веб-сервісом. Потім викликається метод цього об'єкта, ім'я якого збігається з ім'ям самого методу веб-сервісу. Повертає ж цей метод бажаний нами результат.

Отже, цей простий приклад ілюструє нам принцип побудови SOAP-клієнта для веб-сервісів на php. Однак в реальному додатку ще багато про що доведеться подбати, зокрема про те, що в момент звернення до веб-сервісу він може бути тимчасово недоступний або повертати помилку. Явно напрошується використання блоку try / catch / throw :-)