I don't have a proper answer to the question of how to use SoapServer
, but it may be useful to place that in context.
The extern/soap.php
script is a bit of a relic which is not on par with the RESTy APIv3. I was just a casual user at the time, but I'm pretty sure it predates APIv3 and (probably) APIv2. Its major use-case was facilitating a fast return-channel for CiviMail. (There's some kind of smtpd/perl/soap integration which folks used to use.) IMHO, the only reason to retain it in the codebase is for backward compatibility (on the off-chance that it maybe still works for existing installations).
If you skim the code of CRM_Utils_SoapServer
, you'll see get_contact()
and a bunch of mail-related actions (and basically nothing else). The design is generally... shallow.
If you really do need SOAP access, then I'd recommend implementing new bindings between SOAP and APIv3. Ideally:
- The SOAP implementation should be generic, passing along requests to
civicrm_api3()
and getting metadata from civicrm_api3
(ie Entity.get
and *.getfields
).
- The SOAP end-point should ideally go through the menu/router system -- rather than a standalone script (e.g.
http://example.com/civicrm/soap
instead of http://example.com/sites/something/modules/civicrm/extern/soap.php
).
- The SOAP end-point should ideally go into an extension.