- Contents
SOAP Notifier COM API Developer's Guide
Structure of IP Notification Messages
For the purpose of the IC SOAP implementation, message transport is not limited to any kind of protocol. SOAP requests are sent as notifications containing payload data as well as transport-specific out-of-band information. As HTTP is most frequently used as transport for SOAP requests through the internet, an ISAPI listener is provided. However, any kind of client who "talks" Notifier could issue SOAP requests. For example, a SOAP Notifier COM object can directly send SOAP packets to IC.
HTTP and Notifier protocols transport SOAP messages between components in the IC environment.
Request Message Structure
Since Interaction Processor does not directly support Notifier Requests, notifications are used to emulate the request/response mechanism. The SOAP request notifications use the IC's eSOAP_REQUEST_OBJECT object type and an object ID that identifies the client.
Field Name |
Type |
Description |
Version |
int |
2 (Version number of the message structure). |
RequestId |
DWORD |
Request identifier specified by the client to identify the response. The server must send it back in the response. |
ClientName |
string |
Name of the client |
Respond |
bool |
False Server must not send a response back to the client. True Server must send a response to the client. |
InitiatorEvent |
string |
String of the notification Event-ID. Often same as SOAPAction. The notification event ("Initiator Event") can either be explicitly specified or the SOAPAction is will be used as default. In early editions of this API, the Notification Event was always the SOAPAction, but since a handler may only trigger on one specific event (or a wildcard event), the framework was expanded so that the notification event ("Initiator Event") can now be specified explicitly. |
SOAPAction |
string |
SOAP Action name |
TransportInfoSize |
DWORD |
Size in bytes of the transport information data block |
TransportInfoData |
BYTE[] |
Transport information data. This is an XML document that encodes transport specific information. For example, for HTTP it contains the verb as well as the HTTP header fields. The default character set is UTF-8, but the data block may contain an XML declaration with the appropriate encoding attribute. This field may be omitted (Size = 0). |
PayloadSize |
DWORD |
Size in bytes of the SOAP payload data block |
PayloadData |
BYTE[] |
This is the data of the SOAP envelope. The default character set is UTF-8, but the data block may contain XML declaration with the appropriate encoding attribute. |
Response Message Structure
The response is sent back to the client with the object type eSOAP_RESPONSE_OBJECT. The object ID uniquely identifies the client and is used to send the response back to the right client. The clients use GetNotifierSequenceNumber to obtain a unique identifier to identify themselves. Clients that do not expect a response must set the ‘Respond' flag in the request data block to ‘false'. The Message data of the request and response have the following structure.
Field Name |
Type |
Description |
Version |
int |
2 (Version number of the message structure). |
RequestId |
DWORD |
Request identifier specified by the client to identify the response. The server fills this slot with the value in the request data. |
ResultCode |
enum |
Enumeration indicating how the request was processed. Succeeded (0) The SOAP request was processed successfully and without fault. Failed (1) The SOAP request failed. This flag is set by the ‘SOAP Send Response' tool when the body contains a <Fault> element. A client can thus check for a failed request without having to unpack the payload. Unhandled (2) The Initiator fired, but the handler did not invoke ‘SOAP Send Response' to return a response (the ‘SOAP Request' handle went out of scope). |
TransportControlSize |
DWORD |
Size in bytes of the transport control data block |
TransportControlData |
BYTE[] |
Transport control data. This is an XML document that contains transport specific out-of-band control data. For example, for HTTP it contains additional HTTP header fields or status codes to convey special failures. The default character set is UTF-8, but the data may contain an XML declaration with the appropriate encoding attribute. Data block may be empty. |
PayloadSize |
DWORD |
Size in bytes of the SOAP response payload data block. The default character set is UTF-8, but the data may contain an XML declaration with the encoding attribute. |
PayloadData |
BYTE[] |
This is the data of the SOAP response envelope. The data block is empty if the ‘Unhandled' flag is set.
|