A minimalist SOAP client for io.js.
Introduction
This module implements a SOAP client in the most simple way possible. There is no need to invoke the WSDL to discover attributes and operations - it simply uses request to invoke the webservice. This module was inspired by the module AirAsiaExpedia/node-foam but implementing ES6 features like Promises and WS-Security.
Install
$ npm install --save soap-cli-simple
Usage
var soap = ; ;
Parameters
- endpoint - the url of the SOAP webservice
- operation - the SOAP operation
- action - the SOAPAction HTTP Header
- message - a JS object representing the message to be serialized to XML
- options - a JS object listing the options that can be passed to the client
Options
- namespace - the default namespace indicated on the WSDL
- namespaces - an array of other namespaces indicated on the WSDL (including the xmlns, as it will appear on the XML)
- header - optional SOAP Headers
WS-Security
To implement WS-Security, it's necessary to pass the information to the SOAP Header, using the ws-security module:
var soap = WSSecurity = ; var security = 'username' 'password' 'PasswordText'; var options = header: security ;
SoapUI or other tools
It is a good practice to use a tool like SoapUI to help on the configuration of the client and on the message templating.
Message on SoapUI:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.oracle-base.com/webservices/">
<soapenv:Header/>
<soapenv:Body>
<web:ws_add soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<int1 xsi:type="xsd:string">1</int1>
<int2 xsi:type="xsd:string">2</int2>
</web:ws_add>
</soapenv:Body>
</soapenv:Envelope>
Javascript Object:
{
"ws_add": {
"int1": "1",
"int2": "2"
}
}
Examples
On the test
folder there is an example of a SOAP invocation.
License
MIT © Alexandre Santos