# Tcl Web Services

## 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 only with TclHttpd or embedded into an application. The server side provides all services as document/literal over HTTP Soap transport. Documentation for the package, including examples can be found here.

- Calling a Web Service from Tcl
- Creating a Tcl Web Service
- Creating a Web Service Type
- REST flavor service response
- Dictionary Representation of XML Arrays
- Using Web Service Options
- Embeding a Web Service into an application
- Tcl Web Service Example
- Tcl Web Service Math Example

The client is known to work with #C and Java based Web Services (your mileage may very).

## License

Standard BSD.

# Web Servers

The server side works with the following web servers:

- TclHttpd
- Rivet
- AOLserver
- WUB
- wibble
- Embedded mode (see Embedding)

## Packages Required

The following packages are used:

- Tcl 8.6
- tdom 0.8.1
- tcltls or TWAPI 4.4.0 for client and embedded server TLS support
- log from TclLib
- uri from TclLib
- struct::set from TclLib
- http from Tcl itself
- yajl-tcl from flightaware github (only for rest-flavour requests)

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

The following packages are additionally used in Embedded Server mode:

- base64 from TclLib (also channel server)
- html from TclLib (also channel server)
- ncgi from TclLib
- fileutil from TclLib