Où sommes nous ?

Retour

Webservice Soap

Ce billet est un complément de celui consacré aux WebServices en PHP : il ne contient que la transcription des exemples de clients en Lua.

A l'heure où j'écris ces lignes, Lua ne gère pas encore côté client le WSDL ... donc on s'en passera.

Pré-requis

luarocks install luasoap

Les fichiers nécessaires seront installés dans /usr/local ... l'utilisateur doit donc avoir les écritures ou l'installation doit se faire en temps que root.

Hello World

local client = require "soap.client"
require "tostring"    -- see "universal tostring" from http://lua-users.org/wiki/TableSerialization

local ns, meth, ent = client.call {
    url = "http://127.0.0.1/~laurent/hello.php",
    soapaction = "blabla",
    method = "HelloWorld",
    entries = {
    }
}
print("namespace = ", ns, "element name = ", meth)

print( tostring( ent ))

La partie importante est évidemment l'appel de la fonction client.call avec comme argument un tableau qui contient :

Et cela donne

$ lua TstHello.lua 
namespace =     http://schemas.xmlsoap.org/soap/encoding/    element name = helloWorldResponse
{
  "Cool, ca marche"
  {
    "xsi:type"
    xsi:type = "xsd:string"
  }
  tag = "return"
}

Echo

local client = require "soap.client"
require "tostring"    -- see "universal tostring" from http://lua-users.org/wiki/TableSerialization

local ns, meth, ent = client.call {
    url = "http://127.0.0.1/~laurent/WSEcho.php",
    soapaction = "blabla",
    method = "allo",
    entries = {
        {
            tag = "s", "Ca marche ou bien ?",
        },
    }
}
print("namespace = ", ns, "element name = ", meth)

print( tostring( ent ))

Et le résultat

$ lua TstEcho.lua 
namespace =     http://schemas.xmlsoap.org/soap/encoding/    element name = alloResponse
{
  "Votre chaine etait 'Ca marche ou bien ?'"
  {
    "xsi:type"
    xsi:type = "xsd:string"
  }
  tag = "return"
}

Pour se protéger des caractères spéciaux

Si le message à envoyer contient des caractères spéciaux, il convient de l'encadrer de tag CDATA comme suit :

entries = {
        {
            tag = "s", "<![CDATA[Ca marche ou bien ?]]>",
        },
    }

Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.