SOAP

The SOAP Component provides the SOAP Web Services work opportunity within a flow. As an integration platform, Integrations has an opportunity to invoke SOAP Web services over HTTP.

Requirements

The platform supports the following SOAP protocol versions:

  • SOAP 1.1

  • SOAP 1.2

The component supports the following WSDL styles:

  • RPC/Literal

  • Document/Encoded

  • Document/Literal

Credentials

Type

You can select the following authorization type:

No Auth
Basic Auth
Username

A username for the basic authorization header in the SOAP request.

Password

A password for the basic authorization header in the SOAP request.

API Key Auth

This is not supported yet.

No error would not be thrown for invalid credentials, as the credentials do not contain WSDL URL. In case of invalid credentials error expected on sample retrieve step:

Unexpected response from server status code: 401 Anunthorized

Usage

  1. Find and select the SOAP component in the component repository:

    step 1
  2. Create new or select existing credentials:

    step 2
  3. Specify the WSDL URL and choose a binding and an operation in that order. Then configure an input data and click Continue:

    step 3
  4. Retrieve sample or add sample manually:

    step 4

Triggers

The SOAP component has one trigger.

Receive SOAP Request

Webhook that validates input body over WSDL. image::soap/soap-reply.png[SOAP reply trigger]

Input fields

WSDL URI

The public URL address of the WSDL.

Binding

One of the bindings available and described in the WSDL, which you want to use for a SOAP call.

Operation

One of the operations available for the binding selected above.

Validation

If set to Enabled, this validates the SOAP Body over WSDL.

Usage example

Configuration
WSDL UR

http://www.dneonline.com/calculator.asmx?wsdl

Binding

CalculatorSoap12

Operation

Add

Validation

Enabled

Request Body
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Add xmlns="http://tempuri.org/">
      <intA>1</intA>
      <intB>1</intB>
    </Add>
  </soap:Body>
</soap:Envelope>
Output
{
  "Add": {
    "intA": "1",
    "intB": "1"
  }
}

Limitations

  • Namespaces ignored and SOAP Body with 2 tags that have the same name but in different namespaces would be invalid.

  • SOAP Headers are not supported yet.

  • Retrieve Sample does not represent the actual behavior of the component.

Actions

Call

Makes a call to SOAP service over HTTP using public WSDL URL.

The Call action supports Basic Authorization:

  1. Choose Basic Authorization in credentials.

  2. Provide the credentials for WSDL.

    step 3

Input fields

WSDL URI

Public URL address of the WSDL.

Binding

One of the bindings available and described in the WSDL, which you want to use for a SOAP call.

Operation

One of the operations available for the binding you have selected above.

Request timeout

The timeout period in milliseconds (1-1140000) while the component waiting for server response. Defaults to 60000 (60 sec).

SOAP Fault

A SOAP fault is used to carry error information within a SOAP message. The component handles SOAP faults and emits a platform exception in this case.

SOAP Fault should comply with the W3C SOAP Fault standard.

Example: SOAP 1.1 Fault
{
  "Fault": {
    "faultcode": "S:Server",
    "faultstring": "Server error java.lang.NullPointerException",
    "faultactor": null
  }
}
Example: SOAP 1.2 Fault
{
  "Fault": {
    "faultcode": "S:Server",
    "reason": "Server error java.lang.NullPointerException"
  }
}

Input JSON schema

The component does not have static input JSON schema as it is dynamically generated for every WSDL/binding/operation specified during the configuration of the component input fields.

Apache Axis2 and FasterXML JsonSchemaGenerator tools are used by the component internally to generate input metadata. Read the documentation linked above for more information about these tools.

Output JSON schema

Output JSON schema is generated dynamically the same as for the input (see above).

Additional information

You should specify the input fields in the order shown below. You will get an error otherwise.

  • WSDL URI

  • Binding

  • Operation

SOAP reply

Wraps and returns input data as SOAP response by provided SOAP metadata:

soap reply

Input fields

WSDL URI

Public URL address of the WSDL.

Binding

One of the bindings available and described in the WSDL, which you want to use for a SOAP call.

Operation

One of the operations available for the binding you have selected above.

Input JSON schema

The component does not have static input JSON schema as it is dynamically generated for every WSDL/binding/operation specified during the configuration of the component input fields.

Apache Axis2 and FasterXML JsonSchemaGenerator tools are used by the component internally to generate input metadata. Read the documentation linked above for more information about these tools.

Output JSON schema

Output JSON schema is generated dynamically the same as for the input (see above).

Input data example
{
  "AddResponse": {
    "AddResult": 3
  }
}
Output data example
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <AddResponse xmlns="http://example.org/">
            <AddResult>3</AddResult>
        </AddResponse>
    </soap:Body>
</soap:Envelope>

Known limitations

Here are the limitations of this component:

  • RPC/SOAP-Encoded styles are not supported.

    • All major frameworks for web services support Document/literal messages. Most of the popular frameworks also have some support for RPC/encoded, so developers can still use it to create encoded-only services. As a result, it is hard to estimate the number of web services that work only with SOAP-encoded messages. However, there is a tendency to move away from RPC/encoded towards Document/literal. Since the SOAP encoding specification does not guarantee 100% interoperability and there are vendor deviations in the implementation of RPC/encoded.

  • Only self-containing WSDLs are supported. This means that WSDL containing external XSD schemas will not work in this version of the component.

  • WS-Security header is not supported.

  • WS-Addressing is not supported.

  • Custom SOAP headers can not be added.

  • The WSDL and associated schemas must be accessible via a publicly accessible URL. File upload of the WSDL and/or XSD schemas is not supported.

  • The component does not support a multi-part format of messages in the SOAP request element. Only the first part of the request element will be processed in the current component version.

  • Emit SOAP Faults Instead of Throwing an Error feature of the 'CallAction' action has not been fully tested against all the possible SOAP faults.