The distribution provides both client side access to Web Services and server side creation of Web Services. Currently only document/literal and rpc/encoded with HTTP Soap transport are supported on the client side. The server side currently works with several web servers(see below). It provides all services as document/literal over HTTP Soap transport. Documentation for the package, including examples can be found here. The distribution consist of several packages.
This project has the following public repositories:
- Core Tcl/Tk host -- This is the main repository. Please enter all tickets, checkin, etc here.
- Chisel App host
DocumentationDocumentation for the tclws package is available at the following links:
The client is known to work with several providers of Web Services (your mileage may very). Also these clients have been tested to work with the Web Services provided by the WS::Server (server side) package of tclws.
The server side works with the following web servers (see Web Server Settings for known required options):
- Apache with Rivet
- Embedded mode (see Embedding)
- Microsoft Internet Information Server
Release notes, ZIP and Tarball files are available at the Downloads page.
Standard BSD license.
The following packages are used (minimum versions specified):
- Tcl 8.5
- tdom 0.8.1
- log from TclLib
- uri from TclLib
- struct::set from TclLib
- http from Tcl itself (min version 2.8.12 to have continue bug fixed https://core.tcl-lang.org/tcl/info/46b6edad51e645c7 (min Tcl 8.6.8), was needed for Microsoft WS)
Lastly the following packages are additionally used in Embedded mode:
TCLWS implements a limited set of standards used under the keyword "Web-Service".
WSDL describes an XML document (the WSDL file), which describes the methods and their parameters of the web service.
WSDL 1.1 is supported only. Spec: http://xml.coverpages.org/wsdl20000929.html
SOAP describes the format of the call and response XML messages.
SOAP 1.0 is supported only. Spec: https://www.w3.org/TR/2000/NOTE-SOAP-20000508/
Missing features compared to the standards
Webservice call does not support namespace prefixes in subelement if not unique
As TCLWS only supports global namespace prefixes, it copies any namespace prefix in a subelement to the root. An error will rise if this causes an ambiguity.
Thus, the following WSDL will lead to an error:
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q1="URI2" type="q1:MessageQ1"/>While the following two are o.k.:
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q1="URI1" type="q1:MessageQ1"/>and
<wsdl:definitions xmlns:q1="URI1" ...> <xs:element xmlns:q2="URI2" type="q2:MessageQ1"/>