[ale] Help with SOAP::Lite Object syntax
Chris Woodfield
rekoil at semihuman.com
Wed Mar 12 21:02:06 EDT 2008
Hi all,
I'm trying to figure out how to use SOAP::Lite in an object syntax.
There's obviously something fundamental I'm missing, and I was
wondering if anyone clueful could point me to it...
First off, this is how I'm used to building objects locally - nothing
fancy here:
------
/usr/bin/perl -w
BEGIN {
package TestClass;
sub new {
my $class = shift;
my $self = {};
$self->{testval} = "test";
return (bless ($self, $class));
}
sub test {
my $self = shift;
return $self->{testval};
}
}
my $testobj = new TestClass;
print $testobj->test() . "\n";
-----
Running this returns the "test" string as it should.
However, the same function adapted for a SOAP call using SOAP::Lite
gives me errors with similar syntax:
Server side:
#!/usr/bin/perl -w
use strict;
use SOAP::Transport::HTTP;
my $daemon = new SOAP::Transport::HTTP::Daemon (LocalPort => 8080);
$daemon->dispatch_to('Test');
$daemon->handle;
BEGIN {
package Test;
sub new {
my $class = shift;
my $self = {};
$self->{testval} = "test";
return (bless ($self, $class));
}
sub test {
my $self = shift;
return $self->{testval};
}
}
Client side:
-----
#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
my $testobj = new SOAP::Lite
->ns('http://test.server.com:8080/Test')
->proxy('http://test.server.com:8080');
my $query = $testobj->test();
if ($query->fault) {
print "Error: (" . $query->faultcode() . ") " . $query-
>faultstring() . "\n";
}
print $query->result . "\n";
-----
When I run this I get:
Error: (soap:Server) Can't use string ("Test") as a HASH ref while
"strict refs" in use at soaptestserver2.pl line 23.
Sure enough, if I add the line "print Data::Dumper($self) in the
test() function, I get:
$VAR1 = 'Test';
So it's obvious that no actual object is getting passed around, just
the class name.
I'm obviously missing something rather fundamental here. Is it even
possible to do what I'm trying to do? If so, what am I doing wrong?
TIA,
-Chris
More information about the Ale
mailing list