soap.rpc.server

Syntax soap.rpc.server (actionURI, adrRequestText, adrResponseText)

Params actionURI is is a string corresponding to the SOAPAction HTTP header that is used to identify the path to a SOAP-RPC handler.

adrRequestText is the address of a string containing the body of a SOAP request.

adrResponseText is the address of a string in which to store the text of a SOAP call response.

Action Handles a remote procedure call which is expected to conform to the SOAP protocol.

Returns True if the remote procedure was successful, false if there was an error processing the call.

Notes This verb is called from the SOAP responder on an incoming request. The SOAP responder in turn is called from webserver.dispatch for certain HTTP requests.

It's implemented as a script; it converts the XML-encoded request to a Frontier data structure and calls the appropriate SOAP handler. The handler's response is also encoded in XML and sent to the client.

All scripts named #security on the path to a SOAP-RPC handler will be executed. If any of the scripts generates an error, a SOAP fault will be sent to the client, with the text of the error message.

This is one of two core routines in Frontier's SOAP-RPC functionality. The other side, the client, is implemented in soap.rpc.client.

The SOAP responder is stored at user.webserver.responders.soap. SOAP RPC handlers are stored in user.soap.rpcHandlers. Any addresses in that table are de-referenced, so you can point to handlers that appear in other locations.

The SOAP specification is available at http://www.w3.org/TR/SOAP/

In order to encode arrays of structs, your SOAP-RPC handler will need to set adrRequest^.customArrayType, adrRequest^.customNamespace, and adrRequest^.customNamespaceUri. These values will be used for the type and namespace declaration in the array element. If one or more of these values is not defined, an error will be generated. (adrRequest is always in scope when calling a SOAP-RPC handler.)

See Also soap.rpc.client

betty.rpc.server

betty.rpc.client

webserver.dispatch

Discuss