>получяю 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
ну и протоколы собственно можно в логе посмотреть.