SOAP запрос из Perl
Материал из BiTel WiKi
(Различия между версиями)
Darg (Обсуждение | вклад)
(Новая страница: «Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. <source lang="perl"> #!/usr/bin/p…»)
Следующая правка →
(Новая страница: «Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. <source lang="perl"> #!/usr/bin/p…»)
Следующая правка →
Версия 18:27, 16 ноября 2015
Ниже показан пример запроса с использованием протокола SOAP, на языке Perl.
#!/usr/bin/perl use CGI qw(:standard); use DBI; use SOAP::Lite; #use SOAP::Lite +trace => 'all'; используйте для отладки, отлично помогает use MIME::Base64; $cid = 1; $dt = "2015-11-15"; $sum = "10"; #т.к. в данном примере рассматривается случай с зачислением платежа, используем соответствующую ссылку $wsdl = "http://192.168.0.1:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?wsdl"; #comment - это свойство элемента payment, создаем его и заносим значение @comment = ("<comment>$comment</comment>"); $authoriz = 'Basic '.encode_base64('login:password'); #Формируем строку авторизации #если надо в xml-запросах указать SOAP-ENV вместо просто SOAP. Работает и так и так #$SOAP::Constants::PREFIX_ENV = 'SOAP-ENV'; #Аналогично #$SOAP::Constants::PREFIX_ENC = "SOAP-ENC"; $client = SOAP::Lite->new(service=>$wsdl); $client->proxy($wsdl); #определяем пространство где искать типы элементов $client->ns("http://common.balance.contract.kernel.bgbilling.bitel.ru/","ns1"); #если нужен вывод полученного сообщения от сервера, для отладки $client->outputxml('true'); $client->transport->http_request->headers->push_header('Authorization' => $authoriz ); $soap = $client->service($wsdl.'?wsdl'); #создаем объект payment my $pm = SOAP::Data->new(name=>"payment"); # указываем что этот объект будет иметь тип payment из текущего пространства (указали выше) $pm->type("ts:payment"); # определяем атрибуты payment'а $pm->attr({ id => "-1", contractId=>"$cid", date=>"$dt", sum=>"$sum", summa=>"$sum", typeId=>"3", userId=>"0"}); #добавляем payment'у свойство из массива comment, определенного выше $pm->value(@comment); #ну и вызываем процедуру paymentUpdate, передаем на вход переменную содержащую информацию о платеже. Ответ будет выведен на экран print $client->call('paymentUpdate',$pm);