Web Services for Tcl (aka tclws)

Not logged in

Summary

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.

Mirrors

This project has the following public repositories:

Documentation

Documentation 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.

Web Servers

The server side works with the following web servers (see Web Server Settings for known required options):

Download

Release notes, ZIP and Tarball files are available at the Downloads page.

License

Standard BSD license.

Packages Required

The following packages are used (minimum versions specified):

Additionally, if you are running the TclHttpd on Windows, it is highly recommended that you use the iocpsock extension.

Lastly the following packages are additionally used in Embedded mode:

Standards

TCLWS implements a limited set of standards used under the keyword "Web-Service".

Implemented standards

WSDL

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

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"/>