SOAP4R WSDL response

J

Jim Menard

I'm trying to use wsdlDriver.rb to call a Web service. I have a WSDL
file. When I run my script, it connects to the Web service, calls the
operation I specify ("approve"), and receives the response string.
However, it doesn't put the response string into the message part that
the operation "approve" uses as its output message. Instead, it tries
to find something called "approveResponse", which is not described in
the WSDL file. I see the following error:

c:/ruby/lib/ruby/1.8/wsdl/soap/complexType.rb:69:in
`child_defined_complextype': Cannot find
{http://www.w3.org/2001/XMLSchema}string as a children of
{http://loans.org/wsdl/loan-approval}approveResponse. (RuntimeError)
from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:382:in
`decode_tag_by_wsdl'
...

Why isn't the response string being put into the message part that the
operation "approve" uses as its output message?

Jim
 
J

Jim Menard

Hate to reply to my own question, but I've learned something about what
was going wrong. Instead, I have a new question.

I'm trying to use wsdlDriver.rb to call a Web service. I have a WSDL
file. When I run my script, it connects to the Web service, calls the
operation I specify ("approve"), and receives the response string.
However, it doesn't put the response string into the message part that
the operation "approve" uses as its output message. Instead, it tries
to find something called "approveResponse", which is not described in
the WSDL file. I see the following error:

c:/ruby/lib/ruby/1.8/wsdl/soap/complexType.rb:69:in
`child_defined_complextype': Cannot find
{http://www.w3.org/2001/XMLSchema}string as a children of
{http://loans.org/wsdl/loan-approval}approveResponse. (RuntimeError)
from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:382:in
`decode_tag_by_wsdl'
...

It turns out that the WSDL didn't match the reply from the server. The
reply body is

<ns1:approveResponse soapenv:encodingStyle="..." xmlns:ns1="...">
<xsd:string>approved</xsd:string>
</ns1:approveResponse>

Now, the WSDL for the reply message used to be

<message name="approvalMessage">
<part name="accept" type="xsd:string"/>
</message>

so I tried changing that to

<message name="approvalMessage">
<part name="approveResponse" type="xsd:string"/>
</message>

but that didn't work. I saw the same error message ("can't find string
as child of approveResponse"). So I tried


<message name="approvalMessage">
<part name="string" type="xsd:string"/>
</message>

and it worked! Now I need to figure out why I have to call the part
"string". Does anyone know what is going on here?

Thanks for your help.

Jim
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,141
Latest member
BlissKeto
Top