Skip to content

$soap.call

Description

Invoque un service SOAP.

Syntaxe

$soap.call( address , service , message [ , options ] )

Paramètres

address string
Adresse (URL) du service à invoquer
service string
Nom du service à invoquer
message string
Message SOAP à envoyer
options map

Map d'options. Les options reconnues sont:

method string

Méthode d'appel SOAP. Ewt implémente différentes méthodes pour effectuer un appel SOAP. Dans la version actuelle, les méthodes suivantes sont implémentées:

  • jaxws : méthode basée sur l'API JAX-WS
  • javax / jakarta : méthode standard utilisant l'API SOAP de java
  • autre valeur : implémentation utilisant HttpURLConnection; c'est la méthode par défaut
soapaction string
Valeur de l'entête HTTP SOAPAction
username string
Nom d'utilisateur
password string
Mot de passe associé au nom d'utilisateur
binding

Type de binding. La valeur peut être indiquée au moyen d'un keyword ou d'un nom de binding explicite. Les keyword reconnus sont:

  • soap11: Binding SOAP 1.1 correspondant au namespace http://schemas.xmlsoap.org/wsdl/soap/http
  • soap12: Binding SOAP 1.2 correspondant au namespace http://www.w3.org/2003/05/soap/bindings/HTTP/
  • soap11-mtom (uniquement avec méthode jaxws): Binding 1.1 MTOM correspondant au namespace http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true
  • soap12-mtom (uniquement avec méthode jaxws): Binding 1.2 MTOM correspondant au namespace http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true

Toute autre valeur non vide est utilisée comme telle en tant que binding. Si non défini, le binding SOAP 1.1 est utilisé.

soapheader

Header de l'enveloppe Soap. Le contenu de l'élément décrit par le paramètre est repris comme valeur de Header. La balise racine est ignorée, seul le contenu de cette dernière est repris.

Ainsi pour la valeur <sample><foo>foo</foo><bar>bar</bar></sample>, le header suivant sera construit:

<soap:Header>
    <foo>foo</foo>
    <bar>bar</bar>
</soap:Header>

L'élément racine de la valeur de header n'est pas repris dans le header final. Il est uniquement nécessaire pour permettre de spécifier plusieurs éléments de header.

httpheaders

Map de clé/valeur(s) décrivant les headers à passer à la requête SOAP. La clé doit correspondre au nom de header et la/les valeurs au(x) valeur(s) associée(s).

Si l'option soapaction est définie, elle prime sur la valeur du header SOAPAction qui serait spécifiée par la présente option.

sslcontext map

Paramètres SSL permettant notamment d'activer une authentification par certificat. Les propriétés suivantes sont supportées:

keyStore file / string
Keystore
keyStorePassword string
Mot de passe du keystore
keyAlias string

Nom de la clé à utiliser dans le keystore; il n'est pas nécessaire de spécifier le nom si le keystore ne contient qu'une seule clé.

Si un alias est spécifié, le moteur s'attend à ce que la clé qu'il référence soit de type X509.

keyPassword string
Mot de passe de la clé. Si non défini, la propriété reprend la même valeur que keyStorePassword.
keyStoreType string
Type de keystore; si non défini, la valeur par défaut est PKCS12
sslProtocol string
Protocole SSL à utiliser; si non défini, la valeur par défaut est TLS.
keyAlgorithm string

Algorithme de chargement des clés. Il est recommandé de ne pas définir cette cette propriété et de laisser la JVM gérer automatiquement. Par défaut, la JVM s'appuie sur la valeur de la propriété ssl.KeyManagerFactory.algorithm et se rabat sur la valeur SunX509 lorsque la propriété n'est pas définie.

Notez également que si la propriété keyAlias est définie, le moteur s'attend à trouver un clé X509.

result

Type de résultat attendu en réponse. Les valeurs possibles sont:

  • payload (valeur par défaut): la méthode retourne en réponse le payload de la réponse du service
  • envelope: la méthode retourne en réponse l'intégralité de l'enveloppe reçue du service
loglevel

Niveau de log dans lequel afficher la requête et la réponse. Les valeurs possibles sont les niveaux de log standards (trace, debug, info, warn ou error).

La valeur par défaut est vide. Dans ce cas, aucun log n'est généré.

Retour

Retourne le contenu de la réponse SOAP (sans l'enveloppe)

Exemple 1

1
2
3
4
5
6
7
8
var res = $soap.call(
            "https://www.w3schools.com/xml/tempconvert.asmx",
            "FahrenheitToCelsius",
            `<ns:FahrenheitToCelsius xmlns:ns="https://www.w3schools.com/xml/">
                 <ns:Fahrenheit>75</ns:Fahrenheit>
             </ns:FahrenheitToCelsius>`::t,
            { soapaction: "https://www.w3schools.com/xml/FahrenheitToCelsius" }
          );

L'exemple ci-dessus génère la valeur suivante dans la variable res:

<?xml version="1.0" encoding="UTF-8"?>
<FahrenheitToCelsiusResponse xmlns="https://www.w3schools.com/xml/">
  <FahrenheitToCelsiusResult>23.8888888888889</FahrenheitToCelsiusResult>
</FahrenheitToCelsiusResponse>

Exemple 2

1
2
3
4
5
6
7
8
9
var res = $soap.call(
            "http://www.soapclient.com/xml/soapresponder.wsdl",
            "FahrenheitToCelsius",
            `<soap:Method1 soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
                <bstrParam1 xsi:type="xsd:string">Hello</bstrParam1>
                <bstrParam2 xsi:type="xsd:string">World</bstrParam2>
             </soap:Method1>`::t,
            { soapaction: "https://www.w3schools.com/xml/FahrenheitToCelsius" }
          );

L'exemple ci-dessus génère la valeur suivante dans la variable res:

<?xml version="1.0" encoding="UTF-8"?>
<FahrenheitToCelsiusResponse xmlns="https://www.w3schools.com/xml/">
  <FahrenheitToCelsiusResult>23.8888888888889</FahrenheitToCelsiusResult>
</FahrenheitToCelsiusResponse>