[cl-sockets-devel] wsdl parsing

Christophe Rhodes csr21 at cantab.net
Wed Oct 24 10:07:39 UTC 2007


Hi,

Please forgive the naivety of this; I am a newcomer to the world of
soap, and I don't really understand what I'm doing, or which tool is
the likely cause of the problems I'm having.

I have a SOAP server, built using gsoap, which automatically generates
the attached .wsdl file; and I can successfully use cl-soap to call it
by hand as follows:

--- Begin REPL transcript ---
(let ((ns "http://tempuri.org/adb.xsd"))
  (s-xml:register-namespace ns "adb" :adb)
  (let ((xmethods (make-soap-end-point "http://gibbons.doc.gold.ac.uk:20703")))
    (soap-call xmethods nil `((adb::|status| :|xmlns:adb| ,ns) (:|dbName| "/tmp/foodb")))))
;; SOAP CALL sending: 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">
  <soapenv:Body>
    <adb:status xmlns:adb="http://tempuri.org/adb.xsd">
      <dbName>/tmp/foodb</dbName>
    </adb:status>
  </soapenv:Body>
</soapenv:Envelope>
;; SOAP CALL receiving: <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:adb="http://tempuri.org/adb.xsd"><SOAP-ENV:Body><adb:statusResponse><result><numFiles>0</numFiles><dim>0</dim><length>0</length><dudCount>0</dudCount><nullCount>0</nullCount><flags>0</flags></result></adb:statusResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
(|adb|:|statusResponse|
 (:|result| (:|numFiles| "0") (:|dim| "0") (:|length| "0") (:|dudCount| "0")
  (:|nullCount| "0") (:|flags| "0")))
---  End REPL transcript  ---

However, attempting to call the service using the wsdl parser does not
work, I think because of namespace problems:

--- Begin REPL transcript ---
(wsdl-soap-call "http://omras2.doc.gold.ac.uk/adb.wsdl" "status" :input `("status" ("dbName" "/tmp/foodb")))
;; SOAP CALL sending: 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:tns="http://gibbons.doc.gold.ac.uk:20703//Service.wsdl" xmlns="http://gibbons.doc.gold.ac.uk:20703//Service.wsdl">
  <soapenv:Body>
    <status>
      <dbName>/tmp/foodb</dbName>
    </status>
  </soapenv:Body>
</soapenv:Envelope>
;; SOAP CALL receiving: <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:adb="http://tempuri.org/adb.xsd"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>Method 'status' not implemented: method name or namespace not recognized</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
---  End REPL transcript  ---

So I guess my question is: is my wsdl malformed, or is there some
deficiency in cl-soap's wsdl parser?  If the latter, how can I go
about fixing it?  (As I say, I'm afraid I know very little about the
underlying SOAP technology, so please be as explicit as you have
patience for...)

Thanks,

Christophe

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: adb.wsdl
URL: <https://mailman.common-lisp.net/pipermail/cl-soap-devel/attachments/20071024/16ec37c6/attachment.ksh>


More information about the cl-soap-devel mailing list