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:indecode_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
···
–
Jim Menard, jimm@io.com, http://www.io.com/~jimm/
“COGITO, EGGO SUM.” I think, therefore I am a waffle.
– .sig of Mr. Ska on Slashdot.org
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:stringapproved</xsd:string>
</ns1:approveResponse>
Now, the WSDL for the reply message used to be
so I tried changing that to
but that didn’t work. I saw the same error message (“can’t find string
as child of approveResponse”). So I tried
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
···
On May 29, 2004, at 5:55 PM, I wrote:
Jim Menard, jimm@io.com, http://www.io.com/~jimm/
“Dvorak users of the world flgkd!” – Kirsten Chevalier in
rec.humor.oracle.d