Форум программистов, компьютерный форум, киберфорум
Perl: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 3
1

Библиотека SOAP::Lite

16.03.2016, 16:40. Показов 3123. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день форумчане.

Нужна ваша помощь.
Проблема в следующем. Реализую автоматическую загрузку запрещенных сайтов Роскомнадзора на языке Perl
и возникла трудность в том, что метод sendRequest из библиотеки SOAP::Lite возвращает скаляр, а должен
возвращать массив.
В чем может быть проблема?
Кучу примеров пересмотрел, такой проблемы не у кого нет.
Всё реализуется на Linux Debian.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2016, 16:40
Ответы с готовыми решениями:

MIME::Lite для отправки почты
Добрый вечер Использую MIME::Lite для отправки почты MIME::Lite->send('sendmail',...

Отключение автотипизации на серверной стороне SOAP::Lite
Подскажите, как отключить автотипизацию тегов в ответном сообщении сервера веб-службы (SOAP::Lite)?...

Формирование soap-запроса через SOAP::WSDL
Прошу помочь решить следующую проблему. Необходимо сформировать SOAP-запрос на веб-сервис....

Проблемма с Soap Unicode
Помогите! немогу заставить SOAP::Parser разобрать ответ от сервера если в писутствует необычные...

5
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
17.03.2016, 14:26 2
То есть, вместо соответствующего куска своего кода
ты нам рассказываешь про Linux Debian и просишь раз'яснить проблему.
А на FreeBSD и Centos возвращается массив надо полагать?
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 3
18.03.2016, 09:13  [ТС] 3
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!usr/bin/perl -w
 
use MIME::Base64;
use SOAP::Lite;
use POSIX qw(strftime);
 
#Создаем предохранители на случай, если файл запроса или файл подписи не существует
$key1=0;
$key2=0;
my $date = strftime "%Y-%m-%d", localtime;
if(open(FP, "/root/rosreestr/result/request.xml"))
    {$key1=1;}
    
if (open(FP, "/root/rosreestr/result/request.xml.sign"))
    {$key2=1;}
    
#Если оба файла существуют, начинаем
if (($key1==1)&($key2==1))
{
    #Читаем в буфере файл запроса
    
    open(FIL, "/root/rosreestr/result/request.xml");
    while ($line = <FIL>)
    {
        $ln.=$line;
    }
    
    close (FIL);
    
    $req=$ln;
    
    #Читаем в буфер файл подписи
    open(FIL1, "/root/rosreestr/result/request.xml.sign");
    while ($line1 = <FIL1>)
    {
        $ln1.=$line1;
    }
    
    close (FIL1);
    
    $sig = $ln1;
 
#Получаем описание методов для работы с сервисом через wsdl-схему
$soap = SOAP::Lite->new(proxy => 'http://vigruzki.rkn.gov.ru/services/OperatorRequest/');
$soap->service("http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl");
my @params = (
    SOAP::Data->name('requestFile')->type("xsd:base64Binary")->value(encode_base64($req)),
    SOAP::Data->name('signatureFile')->type("xsd:base64Binary")->value(encode_base64($sig)),
    SOAP::Data->name('dumpFormatVersion')->type("xsd:string")->value("2.1"),
);
my $result = $soap->call(sendRequest => @params);
my $code = $result->body->{sendRequestResponse}->{code};
 
@params = (SOAP::Data->name('code')->type("xsd:string")->value($code));
my $resultFile = $soap->call(getResult => @params);
my $answer = $resultFile->body->{getResultResponse}->{resultComment};
 
my $filename = '/root/rosreestr/result/reestr.zip';
open(my $fh, '>', $filename) or die "Не могу открыть '$filename' $!";
binmode $fh;
print $fh $answer;
close $fh;
}
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
19.03.2016, 01:38 4
думаю, вот так должно работать:

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!usr/bin/perl -w
use strict;
use MIME::Base64;
use SOAP::Lite;
use File::Slurp;
use POSIX qw(strftime);
use 5.14.0;
 
my $buf0 = read_file("/root/rosreestr/result/request.xml");
my $buf1 = read_file("/root/rosreestr/result/request.xml.sign");
 
#Получаем описание методов для работы с сервисом через wsdl-схему
my $soap = SOAP::Lite->new( proxy => 'http://vigruzki.rkn.gov.ru/services/OperatorRequest/' );
$soap->service( "http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl" );
 
my @params = ();
push    @params,
        SOAP::Data->name( 'requestFile'       )->type( "xsd:base64Binary" )->value( encode_base64($buf0) ),
        SOAP::Data->name( 'signatureFile'     )->type( "xsd:base64Binary" )->value( encode_base64($buf1) ),
        SOAP::Data->name( 'dumpFormatVersion' )->type( "xsd:string"       )->value( "2.1");
my $result  = $soap->call(sendRequest => @params);
my $code    = $result->body->{sendRequestResponse}->{code};
 
@params = ();
push    @params,
        SOAP::Data->name('code')->type("xsd:string")->value($code);
 
$result     = $soap->call(getResult => @params);
my $answer  = $result->body->{getResultResponse}->{resultComment};
 
write_file( '/root/rosreestr/result/reestr.zip', {binmode => ':raw'}, $answer ) ;
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 3
21.03.2016, 10:58  [ТС] 5
Всё равно никакие данные не возвращает, переменная остается пустой.
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
21.03.2016, 21:43 6
ну, бесплатную часть я уже сделал,
код стал стройнее ))
0
21.03.2016, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2016, 21:43
Помогаю со студенческими работами здесь

[SOAP] тэг params отображается как закрытый, нужна подсказка по структуре
есть структура XML SOAP: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;SOAP-ENV:Envelope...

SOAP и set_time_limit - Как работать с настройкой вообще и вместе с SOAP в частности
Не могу понять как работать с настройкой вообще и вместе с SOAP в частности. Есть код: &lt;?php...

Mikrotik hAP lite + Mikrotik hAP lite раздача интернета по сети
Добрый день, приобрели два роутера Mikrotik hAP lite, к первому подходит интернет от провайдера...

SOAP в JavaME, Поддерживает ли JavaME SOAP?
Здравствуйте. Предлагают освоить создание ПО на JavaME, для первой проги вроде всё нормально по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru