http://qs1969.pair.com?node_id=1104308

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

Good morning--

I'm a reasonably experienced Perl programmer, but new to accessing SOAP methods. Specifically, I'm trying to pull out the proper parameters from a customer-supplied WSDL file, and determine the arguments to supply to a SOAP::Lite call, as follows:

In my subroutine to execute a SOAP method, supplying the method name (StartTransaction) and arguments, I use something like: (see below for WSDL source)

my $func = shift @_;

$soap = SOAP::Lite
-> uri('urn:company-com:gateway:v1/ITokenServiceContract/')
-> proxy('http://xxxxx.test.hatchlab.fr/201303')
-> $func(@_);


------------------------------------------
The above executes, but produces an error in the SOAP-Lite debug log:
"IIS 7.5 Detailed Error - 405.0 - Method Not Allowed"

...probably because the uri and proxy fields above are not correct, therefore I'm probably not getting to the SOAP dispatcher. Am I interpreting the WSDL correctly to set URI and PROXY? (WSDL port and binding excerpt below)

THANKS!
Casey

ps: cross-posted without reply on PerlGuru.com
------------------------------------------- WSDL excerpts PORT: <wsdl:portType name="ITokenServiceContract"> <wsdl:operation name="StartTransaction"> <wsdl:input wsaw:Action="urn:company-com:gateway:v1/ITokenServiceContr +act/StartTransaction" message="tns:ITokenServiceContract_StartTransaction_InputMessage"/> <wsdl:output wsaw:Action="urn:company-com:gateway:v1/ITokenServiceCont +ract/StartTransactionResponse" message="tns:ITokenServiceContract_StartTransaction_OutputMessage"/> </wsdl:operation> </wsdl:portType> BINDING: <wsdl:binding name="BasicHttpBinding_ITokenServiceContract" type="tns: +ITokenServiceContract"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="StartTransaction"> <soap:operation soapAction="urn:company-com:gateway:v1/ITokenServiceCo +ntract/StartTransaction" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> SERVICE: <wsdl:service name="TokenService"> <wsdl:port name="BasicHttpBinding_ITokenServiceContract" binding="tns:BasicHttpBinding_ITokenServiceContract"> <soap:address location="http://xxxxx.test.hatchlab.fr/201303/services/ +TokenService.svc"/> </wsdl:port> </wsdl:service>