Mailinglisten-Archive |
On Thursday 27 July 2006 07:29, Peter Webel wrote: > morgen jens, > > nochwas, wie sieht den dein aufruf der wsdl-funtion aus. > ich hab die erfahrung gemacht das es am besten mit > > $client->__soapCall("soapfunction",$ar_soapfunctionparam); > > mit $clint->soapfunction($ar_soapfunctionparam); > > hatte ich manchesmal probleme. > > so long > mfg Peter Hallo Peter... Wie gesagt, egal ob als Array oder als Object... SOAP schneidet nach dem ersten Property ab... ------------------------------------------------------- Was bekommt der Webservice: ------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.personnel.adato.com/"> <SOAP-ENV:Body> <ns1:addAppointment> <arg0> nhhp0j7j0j3354dalhfg96u7t2 </arg0> <arg1> <id> 10006 </id> </arg1> </ns1:addAppointment> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ------------------------------------------------------- Response... ------------------------------------------------------- <?xml version="1.0" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://ws.personnel.adato.com/"> <soapenv:Body> <ns1:addAppointmentResponse> <return> At least one parameter is null </return> </ns1:addAppointmentResponse> </soapenv:Body> </soapenv:Envelope> SOAP ist in eine Klasse gekapselt, ich versuchs mal kurz wiederzugeben: ------------------------------------------------------- Aufruf ------------------------------------------------------- . . . $arrVon = explode('.',$_POST['von']); $arrBis = explode('.',$_POST['bis']); $tsVon = mktime(0,0,0,$arrVon[1],$arrVon[0],$arrVon[2]); $tsBis = mktime(0,0,0,$arrBis[1],$arrBis[0],$arrBis[2]); $tsVon .= '000'; // Java benutzt microseconds... $tsBis .= '000'; // Java benutzt microseconds... $valObj->id = '10006'; $valObj->name = session_id(); $valObj->von = $tsVon; $valObj->bis = $tsBis; $valObj->kategorie= '0'; $valObj->typ = '4'; $arrParams = array ('arg0'=>session_id(),'arg1'=>$valObj); print_r($arrParams); print '<br />'; $retVal = $mySOAP->queryWebService('CalendarService','addAppointment', $arrParams); . . . ------------------------------------------------------- SOAP-Class (ich denke aP_I18N spar ich mir... ;-)) ------------------------------------------------------- . . . public function soapConnect($strService) { try { if (!$this->soapObject = new SoapClient($this->soapServer. $strService.'Service/'.$strService.'?WSDL',$this->soapNS)) { throw new exception; } else { //$this->soapObject->__getFunctions(); return (true); } } catch (exception $e) { $arrVars = array($strService); $this->soapError=aP_I18N::getText('soap_servererror',$arrVars); return (false); } } public function soapDisconnect($strService) { unset ($this->soapObject); } public function soapCall ($strMethod,$arrParameter) { $retVal = ''; try { $retVal = $this->soapObject->$strMethod($arrParameter); } catch (SoapFault $fault) { $arrVars = array($strMethod); $this->soapError=aP_I18N::getText('soap_serviceerror',$arrVars); $retVal = false; } return($retVal); } public function queryWebService($strServiceName,$strFunction,$arrParams) { $retVal = ''; $error=0; if ($this->soapConnect($strServiceName)) { $params = $arrParams; $return = $this->soapCall($strFunction,$params); if ($return!==false) { $retVal = $return; } else { $error=1; } } else { $error=1; } if ($error==1) { $retVal = ' <div id="error"> <table class="error" cellpadding="0" cellspacing="0" border="0"> <tr> <td class="error" rowspan="2"><img src="./share/images/warning.gif" border="0" /></td> <td class="errorheader">'.aP_I18N::getText('soap_error').'</td> </tr> <tr> <td class="error"> '.$this->soapError.' </td> </tr> </div> '; } return($retVal); } . . . -- jens reinemuth pfluegersgrundstr. 23 68169 mannheim +49 (621) 167 99 39 jens at openos.de -- The answer to the question of Life, the Universe, and Everything is... Four day work week, Two ply toilet paper!
php::bar PHP Wiki - Listenarchive