Протокол 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.
Андрей, поправь SOAP::WSLD на SOAP::WSDL.
здравствуйте.
возможно тут так не принято, но -
нужен perl-программист
надо связать секретарский десктоп с PBXnSIP (умеет SOAP)
спасибо
пишите сюда: kav@sskom.su