Скрипт для автоматической загрузки списка запрещенных сайтов:
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 (успешный),
цикл завершается.
Значения кодов ошибок можно посмотреть в официальной документации, по ссылке.
|