in reply to Re: Web services client in Perl
in thread Web services client in Perl


The code is included:
use SOAP::Lite; print "<HTML>\n"; print " <TITLE>CGI perl web services client</TITLE>\n"; print "<br>"; my $service= SOAP::Lite -> service( 'http://localhost:8080/MyCalculatorServer/CalculatorWSService?wsdl +'); my $result = $service->getUnitCageSlot(1234); print "result is: ", $result; print "</br>\n"; #$service->getUnitCageSlot(1234); print "</HTML>\n";

I know $service is OK, the problem is with the web method call.

Many thanks
Sigal

Replies are listed 'Best First'.
Re^3: Web services client in Perl
by olus (Curate) on Jan 09, 2008 at 17:15 UTC
    You get the warning that $result is not initialized when you run this code?
    If not, what errors are you getting?
    Also, it would help to enable debug so that you can see what is going on behind the scenes.
    Do so by use SOAP::Lite +trace => qw(method trace debug);. Run the script from the command line and check the output.

      The previous reply was made by me, I didn't notice that I was logged out

      Hi

      I made some progress I found that Soap::Lite supports rpc/encoded style/encoding only and my WSDL is Document/Literal. So now I'm using SOAP::WSDL
      http://search.cpan.org/~mkutter/SOAP-WSDL-2.00_28/lib/SOAP/WSDL.pm
      The code is as follows
      use SOAP::WSDL; print "<HTML>\n"; print " <TITLE>CGI perl web services client</TITLE>\n"; print "<br>"; my $soap = SOAP::WSDL->new( wsdl => 'http://localhost:8080/MyCalculatorServer/CalculatorWSService? +wsdl' ); $soap->wsdlinit() || die("Can't init"); $som = $soap->call( "getUnitCageSlot", "iFIndex" => 1234); print "result is: ", $som; print "</br>\n"; print "</HTML>\n";

      I'm getting the error:

      Error processing WSDL: can't find the path '/definitions/types/xsd:schema/xsd:element@name="getUnitCageSlot"/xsd:complexType/descendant::xsd:element'

      But all my elements have the prefix of xs and not xsd, so I'm exploring what I can do about that, I thought I'll try change the WSDL.pm to check for xs instead of xsd just to see if it would work but it's not working for me right now.

      I hope my "revelation" about Soap::Lite and Soap::WSDL would at least help other web services beginners like me. :-)