[cl-soap-cvs] CVS update: cl-soap/src/soap.lisp cl-soap/src/wsdl.lisp

Sven Van Caekenberghe scaekenberghe at common-lisp.net
Mon Sep 12 14:28:43 UTC 2005


Update of /project/cl-soap/cvsroot/cl-soap/src
In directory common-lisp.net:/tmp/cvs-serv11181/src

Modified Files:
	soap.lisp wsdl.lisp 
Log Message:
unimplemented API for making SOAP calls supported by WSDL

Date: Mon Sep 12 16:28:40 2005
Author: scaekenberghe

Index: cl-soap/src/soap.lisp
diff -u cl-soap/src/soap.lisp:1.4 cl-soap/src/soap.lisp:1.5
--- cl-soap/src/soap.lisp:1.4	Sat Sep 10 21:57:50 2005
+++ cl-soap/src/soap.lisp	Mon Sep 12 16:28:39 2005
@@ -1,6 +1,6 @@
 ;;;; -*- mode: lisp -*-
 ;;;;
-;;;; $Id: soap.lisp,v 1.4 2005/09/10 19:57:50 scaekenberghe Exp $
+;;;; $Id: soap.lisp,v 1.5 2005/09/12 14:28:39 scaekenberghe Exp $
 ;;;;
 ;;;; The basic SOAP protocol
 ;;;;
@@ -79,6 +79,12 @@
 
 ;;; Call Interface
 
+(defvar *last-soap-call-xml* nil 
+  "When *debug-stream* is non-nil, will contain the last SOAP call's parsed XML")
+
+(defvar *last-soap-result-xml* nil
+  "When *debug-stream* is non-nil, will contain the last SOAP result's parsed XML")
+
 (defun soap-call (server-end-point 
                   header 
                   body 
@@ -96,6 +102,7 @@
          (call-xml (s-xml:print-xml-string call-soap-envelope :pretty t))
          result-xml result-soap-envelope)
     (when *debug-stream*
+      (setf *last-soap-call-xml* call-soap-envelope)
       (format *debug-stream* ";; SOAP CALL sending: ~a~%" call-xml))
     (setf result-xml (do-http-request (get-url server-end-point)
                                       :method :POST
@@ -105,6 +112,8 @@
     (when *debug-stream*
       (format *debug-stream* ";; SOAP CALL receiving: ~a~%" result-xml))
     (setf result-soap-envelope (s-xml:parse-xml-string result-xml))
+    (when *debug-stream*
+      (setf *last-soap-result-xml* result-soap-envelope))
     (if (eql (lxml-get-tag result-soap-envelope) 'soapenv:|Envelope|)
         ;; we ignore returned headers for now
         ;; only the first child of the body is returned, unless it is a fault


Index: cl-soap/src/wsdl.lisp
diff -u cl-soap/src/wsdl.lisp:1.3 cl-soap/src/wsdl.lisp:1.4
--- cl-soap/src/wsdl.lisp:1.3	Mon Sep 12 13:24:01 2005
+++ cl-soap/src/wsdl.lisp	Mon Sep 12 16:28:40 2005
@@ -1,6 +1,6 @@
 ;;;; -*- mode: lisp -*-
 ;;;;
-;;;; $Id: wsdl.lisp,v 1.3 2005/09/12 11:24:01 scaekenberghe Exp $
+;;;; $Id: wsdl.lisp,v 1.4 2005/09/12 14:28:40 scaekenberghe Exp $
 ;;;;
 ;;;; The basic WSDL protocol: we parse the generic and soap specific parts
 ;;;;
@@ -295,5 +295,24 @@
   (let ((buffer (do-http-request url)))
     (with-input-from-string (in buffer)
       (parse-wsdl in))))
+
+;; Using WSDL to make structured SOAP calls
+
+(defun wsdl-soap-call (wsdl 
+                       operation-name
+                       &key
+                       service-name
+                       port-name
+                       input
+                       output)
+  "Use WSDL to make a SOAP call of operation/port/service using input/output"
+  (declare (ignore wsdl operation-name service-name port-name input output))
+  ;; wsdl: either an instance of wsdl-document-definitions, a string url, a stream to parse, a pathname
+  ;; operation-name: string naming the operation to invoke
+  ;; service-name: string of service to use (if nil, use first service found)
+  ;; port-name: string of port of service to use (if nil, use first port found)
+  ;; input: plist ("name1" value1 "name2" value2) of actual parameters to use
+  ;; output: what to do with the result (if nil: use the contents of the first part of the output message, if possible)
+  t)
 
 ;;;; eof




More information about the Cl-soap-cvs mailing list