Wednesday 02 March 2005 3:34:15 am
Hello all, Just this message to announce that i did a very simple extension that connects onto a wsdl service and returns an associative array with the result of a call to a web services: Basically
{let resultat=fetch('pear_soap_client','getSOAPResult',hash(soapWSDLURL,'http://nsilasw2k02:8080/gpat/services/Login?wsdl',
soapOperation, 'getUserSecurity',
soapOperationParameters, array('bco','7654','administrator','PA')))}
{$resultat.SQLErrorCode} {/let}
gives you: 0
which is part of the following soap response (translated in PHP associative arrays)
Array
(
[SQLErrorCode] => 0
[SQLErrorMessage] =>
[VOUserRoleArray] => stdClass Object
(
[item] => stdClass Object
(
[application] => PA
[codlan] => F
[codusr] => bco
[datcre] => 2004-03-21T23:00:00.000Z
[datmod] =>
[email] => [email protected]
[encryptedUniqueKey] =>
[foncti] => Humoriste
[nom] => Colaglu
[numfax] =>
[numgsm] =>
[numtel] => 09370089
[objectStatus] => NONE
[passwd] => 7654
[prenom] => prenom
[profil] => administrator
[xlogcr] => bco
[xlogmo] =>
)
)
[detailedErrorMessage] =>
)
This code was quite obvious to write (*) but may be of interest for EZ developers and users. If people find it useful and relevant I can publish it as a contribution. However there is a big drawback at this point: the data structure returned by PEAR::SOAP is made of stdclass nested together which is not usable in EZ Publish. I probably need a method to "recursively translate object property vales into hash table". Any idea ? FYI here is this code of the main function of the extension:
...
require_once('SOAP/Client.php');
...
function &getSOAPResult( $soapWSDLURL, $soapOperation, $soapOperationParameters)
{
eZINI::setIsDebugEnabled( true );
$wsdl=new SOAP_WSDL($soapWSDLURL);
$proxy=$wsdl->getProxy();
$eval_str="\$result =\$proxy->$soapOperation(";
foreach ($soapOperationParameters as $argValue) {
$eval_str .= "\"$argValue\",";
}
$eval_str = substr("$eval_str", 0, -1).");";
eval($eval_str);
$result_array = get_object_vars($result);
return array( 'result' => &$result_array );
}
Best regards Olivier Pierret (*) compared to other extension code available uploaded in the contrib section.
|