[cvs] [Wiki] created: Doc/Dev/SOAP
Chuck Hagenbuch
chuck at horde.org
Thu Jun 21 15:41:48 UTC 2007
chuck Thu, 21 Jun 2007 08:41:48 -0700
Created page: http://wiki.horde.org/Doc/Dev/SOAP
+ Using Horde as a SOAP server
Horde applications can have their APIs automatically served through SOAP,
XML-RPC, and with the right API methods implemented, !WebDAV and SyncML.
(more details on this should go here or be linked here)
++ Complex Types
You can define complex types in the <code>$_types</code> array in
<code>app/lib/api.php</code>. Here is an example:
<code type="php">
$_types = array(
'attrValues' => array('attr' => 'string',
'values' => '{urn:horde}stringArray'),
'attrValuesArray' => array(array('item' =>
'{urn:horde}serviceman_attrValues')),
);
</code>
which automagically generates this WSDL:
<code>
<complexType name="serviceman_attrValues">
<all>
<element name="attr" type="xsd:string"/>
<element name="values" type="tns:stringArray"/>
</all>
</complexType>
<complexType name="serviceman_attrValuesArray">
<complexContent>
<restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType"
wsdl:arrayType="tns:serviceman_attrValues[]"/>
</restriction>
</complexContent>
</complexType>
</code>
The application which uses these types servers several thousand SOAP
transactions a day, with a !J2EE/Axis application on the other end.
Here is another example including both the $_types and $_services
definitions for an application which checks ADSL coverage areas:
<code type="php">
$_types['coverageResults'] = array(
'number' => 'string',
'initial_range' => 'string',
'final_range' => 'string',
'miga' => 'string',
'final_range' => 'string',
'miga' => 'string',
'central' => 'string',
'demarcacion' => 'string',
'services' => 'string',
);
$_types['coverageResultsArray'] = array(
array('item' => '{urn:horde}coverage_coverageResults')
);
$_services['check'] = array(
'args' => array('numbers' => '{urn:horde}stringArray'),
'checkperms' => false,
'type' => '{urn:horde}coverage_coverageResultsArray'
);
function _coverage_check($numbers) {
// code that returns an array of results
return array($return);
}
</code>
More information about the cvs
mailing list