You can try an implementation of SOAP with Perl called SOAP::Lite, written by Paul Kulchenko. SOAP::Lite is a collection of Perl modules that provide a simple and lightweight interface for both the client and server side. This version of SOAP::Lite supports the SOAP 1.1 specification (http://www.w3.org/TR/SOAP) and works with many SOAP implementions, including Apache SOAP, Frontier, Microsoft SOAP, Microsoft .NET, DevelopMentor, XMethods, 4s4c, Phalanx, Kafka, SQLData, Lucin (in Java), Perl, C++, Python, VB, COM, and XSLT.
Here’s an example that uses SOAP::Lite. The following code
creates a SOAP::Lite object and uses it, but what’s special about the
SOAP::Lite object is that it’s based on code that lives on www.soaplite.com
. In other words, the
code that lives on the remote end of the connection might not be Perl
at all—but by using SOAP::Lite, you can execute the f2c( )
function as if you were calling
f2c( )
from your own Perl
program.
Also note the uri
and proxy
options. The uri
option is the URI for
SOAP methods. Basically, uri
tells SOAP::Lite where
SOAP-related content lives. In Perl terms, uri
can
represent the class in which you’ll find the function to execute. For
example, let’s say you have the following SOAP server that uses HTTP
as its transport mechanism:
#!/usr/local/bin/perl -w use SOAP::Transport::HTTP; SOAP::Transport::HTTP::CGI -> dispatch_to('Hello::(?:hello)') -> handle ;
This example has two key parts: it will look for a module named
“Hello” and will execute Hello::hello(
)
when called. Note that you don’t have to explicitly
“require” Hello.pm; SOAP::Lite
does this for you. Now, let’s look at the client:
#!/usr/local/bin/perl -w use SOAP::Lite; # If you want to see why something isn't working, enable +trace after # use SOAP::Lite, as shown below #use SOAP::Lite +trace; my $proxy = 'http://www.some.server/cgi-bin/hello'; print SOAP::Lite -> uri('urn:Hello') -> proxy($proxy) -> hello() -> result . " " ;
It’s essential that uri
, as used above, matches
the module in which the hello( )
function lives. If it doesn’t, you won’t see any returned results,
since SOAP::Lite won’t be able to find the module in @INC
(using the +trace
option makes it clear that an unavailable module was not found in
@INC
). Now that we have some
context, let’s take a look at the proxy
option. In
the above example, proxy
is the URL
where the SOAP server lives. When SOAP::Lite sees the
proxy
option, it loads the appropriate module based
on what you request.
3.147.74.211