кто работал с SOAP::Lite, please отзавитесь
>кто работал с SOAP::Lite, please отзавитесь:))) и что это тебе даст? читай Хакер, не помню за какой месяц, там пара статей была.
>>кто работал с SOAP::Lite, please отзавитесь
>
>:))) и что это тебе даст? читай Хакер, не помню за какой
>месяц, там пара статей была.нужна помощь в решенние задачи которая использует это
>>>кто работал с SOAP::Lite, please отзавитесь
>>
>>:))) и что это тебе даст? читай Хакер, не помню за какой
>>месяц, там пара статей была.
>
> нужна помощь в решенние задачи которая использует этоты по русски то можешь написать где и в чем проблема. а уж там посмотрим можно помочь или нет. :)
получяю xml сообщение:
use SOAP::Lite;
my $soap = SOAP::Lite
-> uri('http://sms.com/daemon')
-> proxy('http://sms.com/cgi-bin/SMS/2.cgi');
$xml = SOAP::Data->name('sms' => \SOAP::Data->value(
SOAP::Data->name('id' => '3334'),
SOAP::Data->name('language' => 'en'),
SOAP::Data->name('text' => 'Jhon')));
$r=$soap->sms($xml);
$rez = $r -> result;
print "Результат:$rez \n";
exit;теперь в 2.cgi:
#!/usr/bin/perl -w
use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI
-> dispatch_to('daimon')
-> handle;
package daimon;
sub sms {
$p=@_; # object/class reference
my $param2 = SOAP::Data->name('text'=>$p);
return $param2;
}
должен возращят $param='Jhon' , а он возвращяет $param='2'
>получяю xml сообщение:
>должен возращят $param='Jhon' , а он возвращяет $param='2'ну ну.
вот мой пример: сервер serv2.pl:
#!/usr/bin/perl -w
use SOAP::Transport::HTTP;
use Data::Dumper;
use strict;SOAP::Transport::HTTP::CGI
-> dispatch_to('daemon')
-> handle;package daemon;
sub sms {
my $p=shift; # object/class reference
my $envelope = pop;my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
my $logsdir = "/srv/www_test/log/"; #убедись что для пользователя апач эта директория доступна для записи
$year += 1900;
$mon++;
my $month_logsfile = $logsdir.sprintf("%.4d%.2d.log",$year,$mon);
open(LOG, '>>', $month_logsfile) or die "Can't open log file $month_logsfile\n";
print LOG sprintf("%.4d.%.2d.%.2d %.2d:%.2d:%.2d",$year, $mon, $mday, $hour,$min,$sec), " Get query:\n";print LOG Data::Dumper::Dumper($envelope);
$envelope->{'text'} = $envelope->{'text'} . " +server ret";close(LOG);
return $envelope;
}1;
клиент: client2.pl
#!/usr/bin/perl -w#use SOAP::Lite;
use SOAP::Lite +trace => [transport=>\&log];
use Data::Dumper;use strict;
my $soap = SOAP::Lite
-> uri('http://test.localhost/daemon')
-> proxy('http://test.localhost/cgi-bin/serv2.pl');my $xml = SOAP::Data->name('sms' => \SOAP::Data->value(
SOAP::Data->name('id' => '3334'),
SOAP::Data->name('language' => 'en'),
SOAP::Data->name('text' => 'Jhon')));my $r=$soap->sms($xml);
my $rez = $r->result;
#print "Результат:$rez \n";
#print Dumper($r)."\n";
print Dumper($rez)."\n";
print "Результат:".$rez->{'text'}." \n";exit(0);
sub log {
open LOG, ">>client.log";
print LOG $_[0]->as_string."\n";
close LOG;
}1;
ну и то что видит клиент(печатает):
$ ./client2.pl
$VAR1 = {
'language' => 'en',
'text' => 'Jhon +server ret',
'id' => '3334'
};Результат:Jhon +server ret
ну и протоколы собственно можно в логе посмотреть.
>$p=@_; # object/class reference
>должен возращят $param='Jhon' , а он возвращяет $param='2'потому что в строке $p=@_; # object/class reference
в $p заносится количество элементов в массиве @_, т.е. число 2, а после оно возвращается клиету.
все просто :)).