cerian has asked for the wisdom of the Perl Monks concerning the following question:

Greetings,

I currently have a SOAP::Lite web service and client that are working fine together. We now want to add a .net client. I used Pod::WSDL to create a WSDL file, but it doesn't seem to be pointing to the correct things. The web service lives at http://my.domain.com/cgi-bin/web_svc.pl. It contains one package (foo) and several functions, only one of which (bar) I want available to the .net client. The web service looks like this:

use SOAP::Transport::HTTP; SOAP::Transport::HTTP::CGI -> dispatch_to('foo') -> handle; package foo; . . . =begin WSDL _IN usr_nm $string User Name _IN pwd $string Password _IN ext_id $string External ID _IN bar_cd $string Bar Code _RETURN $int Number of passes inserted (should be one) =end WSDL sub bar { my (undef, $usr_nm, $pwd, $ext_id, $bar_cd) = @_; do stuff; return(1); }

The WSDL file, generated by Pod:WSDL, seems to point only to the package, foo. I don't see any mention in here of web_svc.pl. So far, we've been unable to get anything meaningful out of it for .net. I found some web pages that talk about tweaking the Pod::WSDL output as routine. Unfortunately, they don't give any specifics. The WSDL file looks like this:

<?xml version="1.0" encoding="UTF-8"?> <!-- WSDL for http://my.domain.com/cgi-bin created by Pod::WSDL versio +n: 0.061 on Mon May 9 14:28:55 2011 --> <wsdl:definitions targetNamespace="http://my.domain.com/foo" xmlns:imp +l="http://my.domain.com/foo" xmlns:wsdlsoap="http://schemas.xmlsoap.o +rg/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:so +apenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://w +ww.w3.org/2001/XMLSchema" xmlns:tns1="http://my.domain.com/foo"> <wsdl:types> <schema targetNamespace="http://my.domain.com/foo" xmlns="http +://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encodin +g/" /> <complexType name="Integer"> <sequence> </sequence> </complexType> </schema> </wsdl:types> <wsdl:message name="barRequest"> <wsdl:part name="usr_nm" type="xsd:string"> <wsdl:documentation>User Name</wsdl:documentation> </wsdl:part> <wsdl:part name="pwd" type="xsd:string"> <wsdl:documentation>Password</wsdl:documentation> </wsdl:part> <wsdl:part name="ext_id" type="xsd:string"> <wsdl:documentation>External Garage ID</wsdl:documentation +> </wsdl:part> <wsdl:part name="bar_cd" type="xsd:string"> <wsdl:documentation>Pass Bar Code</wsdl:documentation> </wsdl:part> </wsdl:message> <wsdl:message name="barResponse"> <wsdl:part name="barReturn" type="tns1:Integer"> <wsdl:documentation>Number of passes inserted (should be o +ne)</wsdl:documentation> </wsdl:part> </wsdl:message> <wsdl:portType name="fooHandler"> <wsdl:operation name="bar" parameterOrder="usr_nm pwd ext_id b +ar_cd"> <wsdl:input message="impl:barRequest" name="barRequest" /> <wsdl:output message="impl:barResponse" name="barResponse" + /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="fooSoapBinding" type="impl:fooHandler"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoa +p.org/soap/http" /> <wsdl:operation name="bar"> <wsdlsoap:operation soapAction="" /> <wsdl:input name="barRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.o +rg/soap/encoding/" namespace="http://my.domain.com/foo" use="encoded" + /> </wsdl:input> <wsdl:output name="barResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.o +rg/soap/encoding/" namespace="http://my.domain.com/foo" use="encoded" + /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="fooHandlerService"> <wsdl:port binding="impl:fooSoapBinding" name="foo"> <wsdlsoap:address location="http://my.domain.com/cgi-bin" +/> </wsdl:port> </wsdl:service> </wsdl:definitions>