SOAP::WSDL

| Комментариев: 2

Протокол SOAP — замечательная вещь. Но настолько запутанная, что все модули для работы с этим протоколом наследуют это свойство. Более того, разрабочики не всегда понимают назначение документа WSDL и запрашивают его при каждом обращении к методам удаленного объекта.

Когда-то я пробовал пользоваться модулем SOAP::Lite и мне не понравилось. Не помню, что именно, но наверное то, что пользоваться было неудобно.

Спустя несколько лет мне вновь потребовалось работать с SOAP из перла, и я решил попробовать второй модуль :-) Заработало почти сразу. С SOAP::Simple за пять минут ничего не вышло, а с SOAP::WSDL (для работы которого необходим SOAP::Lite того же автора, живущего в германской Дубне Эрлангене) все получилось замечательно.

Если все упростить, то работа по протоколу SOAP состоит из двух этапов: 1) чтение описания WSDL и 2) запрос необходимого метода. Мощь WSDL — того же порядка, что и SGML. Задумано настолько всеохватывающе, что понять всё и сразу невозможно.

Чтение WSDL, разумеется, нужно делать один раз за жизнь проекта (или хотя бы за время работы веб-сервера). А потом знай себе дергай методы.

Вот примерчик, который позволяет узнать номер моего телефона.

use v5.10;
use strict;
use SOAP::WSDL;
use Data::Dumper;

my $soap = SOAP::WSDL->new(
    wsdl => 'http://www.webservicex.net/whois.asmx?WSDL',
);

my $result = $soap->call(
    'GetWhoIS',
    {
        GetWhoIS => {
            HostName => 'shitov.ru'
        }
    }
);
say Dumper($result);

$ perl test.pl | grep phone

Краткий ликбез по SOAP доступен в «Школе W3C».

А авторский ликбез по SOAP::WSDL (хех, а слайды лежат у меня на диске отдельным видеофайлом) — на YAPC::TV.



P. S. После экспериментов выяснилось, что на этом сервере перестал работать XML::LibXSLT:

This version of XML::LibXSLT requires XML::LibXML 1.67 (ABI 1), which is incompatible with currently installed XML::LibXML 1.70 (ABI 2). Please upgrade XML::LibXSLT, XML::LibXML, or both! at /usr/local/lib/perl5/site_perl/5.10.0/i686-linux/XML/LibXML.pm line 49.

Проблема разрешилась переустановкой XML::LibXSLT.

Комментариев: 2

Андрей, поправь SOAP::WSLD на SOAP::WSDL.

здравствуйте.
возможно тут так не принято, но -
нужен perl-программист
надо связать секретарский десктоп с PBXnSIP (умеет SOAP)
спасибо
пишите сюда: kav@sskom.su

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 18.11.2009 23:26. Автор — ash.

Предыдущая запись — Net::WolframAlpha

Следующая запись — Live demo

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.