[an error occurred while processing this directive]

Автоматическое получение списка запрещенных сайтов от РОСКОМНАДЗОР с помощью Perl
Скрипт для автоматической загрузки списка запрещенных сайтов:

   use MIME::Base64;
   use SOAP::Lite;
   open REQ,'<request.xml'; 
   $req.=$_ while <REQ>; 
   close REQ;   
   encode_base64($req);

   open SIG,'<PKCS#7'; 
   $sig.=$_ while <SIG>;
   close SIG;

   $soap = SOAP::Lite->service('http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl');
   $r = $soap->getLastDumpDate(); 
   print "time: $r\\n";

   @r = $soap->sendRequest($req, $sig); 
   $code = $r[2]; 
   print "code: $code\\n";

   sleep 1, print "$_\\n" for 1..300;
   @r = $soap->getResult($code);
   open ZIP,'>register.zip'; 
   print ZIP decode_base64($r[$#r]); 
   close ZIP;


Дополнение:
Сервис рнк обновился, ниже пример автоматической выгрузки в соответствии с
изменёнными рекомендациями:

   use MIME::Base64;
   use SOAP::Lite;
   
   undef $/;

   open REQ,'</home/rkn/request.xml';
   $req = <REQ>;
   close REQ;
   encode_base64($req);

   open SIG,'</home/rkn/PKCS#7';
   $sig = <SIG>;
   close SIG;

   $dfv = '2.0';

   $soap = SOAP::Lite->service('http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl');
   $a = $soap->getLastDumpDate();
   @a = $soap->sendRequest($req, $sig, $dfv);

   while(1) {
        sleep 60;
        @b = $soap->getResult($a[2]);
        last if $b[2] ne 0;
   }

   if($b[2] eq 1){
        open ZIP,'>/home/lennotoecom/file.zip';
        print ZIP decode_base64($b[1]);
        close ZIP;
   }


Цикл выполняется раз в минуту (по рекомендации ркн),
каждый раз проверяя полученный от сервиса код ($b[2]),
пока переменная 0 цикл выполняется, как только код меняется на значения от -1
до -7(ошибки) или 1 (успешный),
цикл завершается.

Значения кодов ошибок можно посмотреть в официальной документации, по ссылке.
 
08.11.2013 , Автор: Lennotoecom
Ключи: perl, script, soap / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Подпрограммы для WEB

[an error occurred while processing this directive]

[an error occurred while processing this directive]