|
Posted by Dennis Roesler on April 7, 2006, 11:36 am
Please log in for more thread options
Hi,
I'm struggling with SOAP::Lite and using .wsdl files. Given the
configuration shown below, what should be in these sections of the .wsdl
file?
<operation name="testWsdl">
<soap:operation soapAction="??????????????????????????????????"/>
<soap:address location="http://my.host.com/soap"/>
Are there other aspects of Test.wsdl that aren't properly configured?
I've tried many variations for the above and whatever I use I always get
"Unrecognized method 'testWsdl'. List of available method(s):"
with no list of available methods. I've also used +trace on SOAP::Lite
and don't really get anything meaningful, at least to me.
The only reason it's important to me to use the .wsdl files is that the
service is intended for a .NET client.
Thanks
Dennis
d underscore roesler at agilent dot com
/home/droesler/client.pl
-----------------------------------------------------------
#!/bin/perl
use strict;
use warnings;
use SOAP::Lite;
my $var = $ARGV[0];
# This works
my $soap = SOAP::Lite
-> proxy('http://my.host.com/soap/TestWsdl.cgi')
-> uri('/MyPkgs/TestPkg');
my $result = $soap->testWsdl($var);
# This doesn't
#my $result = SOAP::Lite
# -> service('http://my.host.com/wsdl/Test.wsdl')
# -> testWsdl('Hello World');
unless ($result->fault) {
print $result->result();
} else {
print join ', ',
$result->faultcode,
$result->faultstring;
}
__END__
/opt/sdo/soap/MyPkgs/TestPkg.pm
-------------------------------------------------------
package MyPkgs::TestPkg;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(testWsdl);
sub testWsdl {
my ($class, $var) = @_;
return SOAP::Data->name('Test')
->type('string')
->value("Test Passed: $var");
}
1;
/opt/sdo/soap/TestWsdl.cgi
------------------------------------------------------
#!/bin/perl
use strict;
use warnings;
use SOAP::Transport::HTTP;
use lib '/opt/sdo/soap';
use MyPkgs::TestPkg;
SOAP::Transport::HTTP::CGI
-> dispatch_to('/opt/sdo/soap', 'MyPkgs::TestPkg')
-> handle;
/opt/sdo/wsdl/Test.wsdl
--------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="TestWsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://my.host.com/wsdl/Test.wsdl" targetNamespace="http://my.host.com/wsdl/Test.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="TestRequest">
<part name="var" type="xsd:string"/>
</message>
<message name="TestResponse">
<part name="result" type="xsd:string"/>
</message>
<portType name="TestPortType">
<operation name="testWsdl">
<input message="tns:TestRequest"/>
<output message="tns:TestResponse"/>
</operation>
</portType>
<binding name="TestBinding" type="tns:TestPortType">
<binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="testWsdl">
<soap:operation
soapAction="??????????????????????????????????"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="testWsdl">
<documentation>Testing Web Services with wsdl</documentation>
<port name="TestPortType" binding="tns:TestBinding">
<soap:address location="http://my.host.com/soap"/> </port>
</service>
</definitions>
|