How do I make a Simple SOAP request in CiviCRM?
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.