From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 59021BCAC for ; Sat, 14 May 2005 00:06:49 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j4DM6mJ5020661 for ; Sat, 14 May 2005 00:06:49 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id AAA18350 for ; Sat, 14 May 2005 00:06:48 +0200 (MET DST) Received: from furbychan.cocan.org (furbychan.cocan.org [80.68.91.176]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id j4DM6lUh019058 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Sat, 14 May 2005 00:06:48 +0200 Received: from rich by furbychan.cocan.org with local (Exim 3.35 #1 (Debian)) id 1DWiLg-0005oN-00 for ; Fri, 13 May 2005 23:09:36 +0100 Date: Fri, 13 May 2005 23:09:36 +0100 To: caml-list@inria.fr Subject: More on SOAP Message-ID: <20050513220936.GA7588@furbychan.cocan.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i From: Richard Jones X-Miltered: at concorde with ID 428524F8.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 428524F7.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; trivial:01 ocaml:01 parsing:01 mli:01 val:01 val:01 mli:01 tarball:01 ocaml:01 pxp:01 ocamlnet:01 pcre:01 notepad:01 campaign:98 goodbye:98 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.2 X-Spam-Level: I've written a very trivial SOAP client in pure OCaml. I'm interested in what people think about the approach I've used. Instead of parsing WSDL, what I'm doing is allowing you to define the interface as a familiar .mli file, as in the example below: ---------------------------------------------------------------------- type campaign = { dailyBudget : int; id : int; name : string; } val hello : string -> string val goodbye : string -> string val concat : string -> string -> string val show : campaign -> unit ---------------------------------------------------------------------- The .mli file is then parsed using camlp4 macros and converted into stub functions. These can be called, and generate real SOAP calls to the remote SOAP server. I have a very early, experimental package for people to play with. This tarball contains a Perl server (based on SOAP::Lite) and the OCaml client. http://annexia.org/tmp/simplesoap-0.0.1.tar.gz It requires PXP, ocamlnet, equeue and PCRE. Any type of feedback is very welcome. Rich. -- Richard Jones, CTO Merjis Ltd. Merjis - web marketing and technology - http://merjis.com Team Notepad - intranets and extranets for business - http://team-notepad.com