Как прокомментировал @Grinnz: пожалуйста, не используйте SOAP :: Lite, это ужасно.Де-факто стандартом для выполнения операций SOAP через HTTP в Perl является XML :: Compile :: SOAP , который является довольно полным, хорошо поддерживается и тщательно документирован.Тем не менее, это может быть немного сложным, чтобы разобраться с этим из-за внутренней сложности протокола SOAP.Следующее объяснение должно помочь вам начать работу.
Прежде чем загрузить все модули:
use XML::Compile::SOAP11;
use XML::Compile::WSDL11;
Затем первый шаг - создать объект WSDL и загрузить файл WSDL:
my $wsdl = XML::Compile::WSDL11->new;
$wsdl->addWSDL($wsdl_file);
Если ваш WSDL-файл зависит от некоторых XSD-файлов, вы должны сначала загрузить их, до WSDL, вызвав:
$wsdl->importDefinitions($xsd_file);
Обратите внимание, что по соображениям безопасности XML:: Компиляция никогда не будет пытаться загрузить онлайн-ресурсы;Вы должны загрузить их вручную, а затем загрузить их с диска.
Второй шаг заключается в компиляции объекта.Это на самом деле создаст постоянные ссылки на код в объекте, которые вы можете впоследствии вызывать для выполнения операций.Вы передаете URL целевой службы в качестве аргумента компилятору.Например, следующий вызов компилирует все доступные операции:
$wsdl->compileCalls( address => $url);
Во время компиляции у вас также есть возможность передать свой собственный транспортный объект HTTP вместо того, чтобы полагаться на значения по умолчанию XML :: Compile.Это полезно, когда вы хотите детализированное управление на транспортном уровне (например, установка прокси HTTP, ...).Например, с помощью LWP :: UserAgent:
my $ua = LWP::UserAgent->new( show_progress => 1 );
$wsdl->compileCalls( address => $self->url, user_agent => $ua );
Теперь вы готовы вызвать веб-сервис.Вы передаете название операции и структуру данных следующим образом:
my ( $answer, $trace ) = $wsdl->call( $ope, $data );
Если что-то пойдет не так, вызов прекратится.В случае успеха он возвращает структуру данных Perl, которая представляет проанализированный ответ.Вот и все!
XML :: Compile предоставляет множество полезных методов самоанализа и отладки.Например, после компиляции вы можете распечатать список всех доступных операций с помощью:
$wsdl->printIndex;
Чтобы отобразить детали структуры входных данных данной операции:
$wsdl->explain( $ope, PERL => "INPUT", recurse => 1 );
ПослеОперация была выполнена, объект трассировки может быть использован для получения многих внутренних деталей о том, как все произошло, например:
$trace->printRequest;
$trace->printResponse;
$trace->printTimings;