Zum Hauptinhalt springen

SOAP

Purpose and Use Case

The zbsync_soap module adds the SOAP Grabber (zbs.grabber.soap), which calls a SOAP web service function over a WSDL-described connection and returns its result to the pipeline. There is currently no dedicated SOAP Dumper — outbound SOAP calls that don't need to return data can also be made through this same worker, since the call itself can be any operation exposed by the service.

SOAP Connection

Before using the SOAP Grabber, create a SOAP Connection with:

FieldDescription
WSDL UrlThe service's WSDL endpoint, e.g. http://www.webservicex.net/ConvertSpeed.asmx?WSDL.
Username / PasswordOptional HTTP Basic Auth credentials sent with every call.
TimeoutRequest timeout in seconds.

SOAP Grabber

Configuration

FieldDescription
ConnectionThe SOAP Connection to call through.
CallThe service function call to make, written as a Python-style call expression, e.g. ConvertSpeed(100, 'kilometersPerhour', 'milesPerhour') or ConvertSpeed(**data).

The Call expression is evaluated with access to the same variables as other zSYNC code fields (record, data, instance_env, etc.), so arguments can be built dynamically from upstream pipeline data, e.g. {instance_env['methodname']}(**data).

How It Works

  • Builds a zeep SOAP client from the Connection's WSDL and (if configured) HTTP Basic Auth session.
  • Evaluates the Call expression against the current record and calls the corresponding client.service.<function>(...).
  • Returns the service's response wrapped as {"soap": <result>} for the next worker to consume.

The underlying model also has a Content Path field for pre-extracting a sub-portion of the record as call arguments, but it isn't exposed on the standard configuration form — it's available for custom view extensions.

Usage and Best Practices

Common Pitfalls

  • Call expression mismatches the WSDL: the function name and argument count/order in Call must exactly match what the WSDL exposes — zeep raises at call time otherwise.
  • Missing credentials: if the service requires HTTP Basic Auth and Username/Password aren't set on the Connection, the call fails with an authentication error.