Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

SOAP Lite WSDL Question

by casey0999 (Initiate)
on Oct 19, 2014 at 15:24 UTC ( #1104308=perlquestion: print w/replies, xml ) Need Help??

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('')
-> $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)


ps: cross-posted without reply on
------------------------------------------- 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=""/> <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=" +TokenService.svc"/> </wsdl:port> </wsdl:service>

Replies are listed 'Best First'.
Re: SOAP Lite WSDL Question
by thewebsi (Scribe) on Oct 19, 2014 at 20:29 UTC

    SOAP uses HTTP with an XML payload. "405.0 - Method Not Allowed" usually indicates a URL + method combo that the web server doesn't like. You should be able to test this by going to said URL (proxy) yourself (your browser would use the GET method though, so in case the server treats GET and POST differently, you may want to use a command-line tool to test POST) and see if you have access. It doesn't look like this request gets past the HTTP access part, so the rest is probably not relevant yet.

Re: SOAP Lite WSDL Question
by Anonymous Monk on Oct 19, 2014 at 21:19 UTC
Re: SOAP Lite WSDL Question
by casey0999 (Initiate) on Oct 20, 2014 at 22:53 UTC
    Thanks to both of you for your input. I wonder if SOAP::Lite is having trouble deconstructing this particular WSDL... The soapUI utility program has no problem.. hmmm... I think I will try a different approach. Will report back.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1104308]
Approved by GotToBTru
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2023-06-08 15:34 GMT
Find Nodes?
    Voting Booth?
    How often do you go to conferences?

    Results (34 votes). Check out past polls.