LuaSOAP Reference Manual |
SOAP interface to the Lua programming language |
LuaSOAP is a Lua library to ease the use of SOAP. It enables a Lua program to:
LuaSOAP provides a very simple API and an abstraction layer over XML avoiding manipulation of string representation of data structures.
LuaSOAP is based on
LuaExpat
and on
Lua 5.0.
The abstraction layer over HTTP depends on
LuaSocket 2.0.
SOAP elements are always represented by Lua tables except strings. A SOAP element is a table of the form defined by the Lua Object Model from the LuaExpat library. The table has the following characteristics:
tag
with the element's name;
attr
with the element's attributes (see next section);
The special field attr
is a Lua table that stores the
SOAP element's attributes as pairs <key>=<value>.
To assure an order (if necessary),
the sequence of keys should be placed at the array-part
of the table.
The file soap.lua
implements all basic support for encoding
and decoding SOAP messages.
There are two functions:
encode (namespace, element_name, entries, headers*) => envelope
SOAP-Envelope
element.
It receives two strings with the namespace (an URI) and the SOAP-element's
name and, as the third argument, a table with zero or more
SOAP elements.
An optional fourth argument can be used to generate the SOAP Header
(it must be a SOAP element too).
The result is a string containing the SOAP document.
decode (method_response) => namespace, element_name, elements
The file soap.http.lua
implements a simple stand-alone client
based on LuaSocket 2.0.
The following function is provided:
call (url, namespace, element_name, entries, headers*)
encode
and decode
over a connection to an HTTP server.
The result is the same as
decode
function: the namespace (string), the SOAP-element's name (string)
and a table with the contents of the SOAP Body.
require "soap/http" local ns, meth, ent = soap.http.call ("http://soap.4s4c.com/ssss4c/soap.asp", "http://simon.fell.com/calc", "doubler", { { tag = "nums", attr = { ["xmlns:SOAP-ENC"] = "http://schemas.xmlsoap.org/soap/encoding/", ["SOAP-ENC:arrayType"] = "xsd:int[5]", }, { tag = "number", 10 }, { tag = "number", 20 }, { tag = "number", 30 }, { tag = "number", 50 }, { tag = "number", 100 }, }, }) print("namespace = ", ns, "element name = ", meth) for i, elem in ipairs (ent[1]) do print (elem[1]) end