SOAP запрос из Perl
Материал из BiTel WiKi
Darg (Обсуждение | вклад) (Новая страница: «Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. <source lang="perl"> #!/usr/bin/p…») |
Darg (Обсуждение | вклад) |
||
(3 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
+ | {{Актуальность Версии|версия=6.1}} | ||
+ | |||
Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. | Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. | ||
+ | Для того что легче было вникнуть в код советую открыть две странички | ||
+ | http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?wsdl | ||
+ | где можно ознакомиться с описанием методов и требуемых при обращении к ним аргументов. | ||
+ | Там же будет указано: | ||
+ | <source lang="xml"> | ||
+ | <xsd:schema> | ||
+ | <xsd:import namespace="http://common.bitel.ru" schemaLocation="http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=1"/> | ||
+ | </xsd:schema> | ||
+ | <xsd:schema> | ||
+ | <xsd:import namespace="http://common.balance.contract.kernel.bgbilling.bitel.ru/" schemaLocation="http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=2"/> | ||
+ | </xsd:schema> | ||
+ | </source> | ||
+ | где указанны ссылки на описание используемых в интерфейсе PaymentService типов данных. | ||
+ | |||
+ | Код, который заносит платеж суммой 10, контракту с id=1, датой 15.11.2015: | ||
<source lang="perl"> | <source lang="perl"> | ||
Строка 41: | Строка 58: | ||
print $client->call('paymentUpdate',$pm); | print $client->call('paymentUpdate',$pm); | ||
</source> | </source> | ||
+ | |||
+ | Атрибуты и свойства объекта payment указаны, как написано выше по ссылке http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=2 | ||
+ | Более подробней с модулем SOAP для Perl, можно ознакомится по ссылке [http://search.cpan.org/~phred/SOAP-Lite-1.19/lib/SOAP/Lite.pm http://search.cpan.org/~phred/SOAP-Lite-1.19/lib/SOAP/Lite.pm] |
Текущая версия на 22:15, 16 ноября 2015
Внимание! Данное решение/метод/статья относится к версии 6.1 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.
Ниже показан пример запроса с использованием протокола SOAP, на языке Perl. Для того что легче было вникнуть в код советую открыть две странички http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?wsdl где можно ознакомиться с описанием методов и требуемых при обращении к ним аргументов. Там же будет указано:
<xsd:schema> <xsd:import namespace="http://common.bitel.ru" schemaLocation="http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=1"/> </xsd:schema> <xsd:schema> <xsd:import namespace="http://common.balance.contract.kernel.bgbilling.bitel.ru/" schemaLocation="http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=2"/> </xsd:schema>
где указанны ссылки на описание используемых в интерфейсе PaymentService типов данных.
Код, который заносит платеж суммой 10, контракту с id=1, датой 15.11.2015:
#!/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);
Атрибуты и свойства объекта payment указаны, как написано выше по ссылке http://ваш_сервер:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.balance/PaymentService?xsd=2 Более подробней с модулем SOAP для Perl, можно ознакомится по ссылке http://search.cpan.org/~phred/SOAP-Lite-1.19/lib/SOAP/Lite.pm