Bonjour,
la deconnexion fonctionne maintenant (si j'avais fait plus attention!)
$this->retour = $this->_soapClient->__soapCall('logout', $parameters);
merci
Code : Tout sélectionner
ou [php]) ?
Code : Tout sélectionner
class XSoapClient extends SoapClient {
protected $loginname;
protected $passwd;
protected $wsdl;
protected $_soapClient;
protected $_session = 0;
public function connect()
{
try
{
$parameters = array
(
'loginname' => $this->loginname,
'passwd' => $this->passwd
);
$this->retour = $this->_soapClient->__soapCall('login', $parameters);
$this->_session = $this->retour->session_hash;
return $this->_session;
}
catch (SoapFault $e)
{
$this->getError($e->faultcode, $e->faultstring, $e->faultactor);
}
}
public function disconnect()
{
try
{
$parameters = array ('sessionKey' => $this->_session);
$this->retour = __soapCall('logout', $parameters);
}
catch (SoapFault $e)
{
$this->getError($e->faultcode, $e->faultstring, $e->faultactor);
}
}
class Dem extends XSoapClient {
protected $ini_array = array ();
public function _init()
{
$ini_array = parse_ini_file("app.ini", true);
$this->wsdl = $ini_array['params']['wsdl'];
$this->loginname = $this->ini_array['paramsi']['user'];
$this->passwd = $this->ini_array['params']['passr];
$this->_soapClient = new SoapClient($this->wsdl, array ('exceptions' => 1));
$server = new SoapClient($this->wsdl, array ('encoding' => 'UTF-8'));
}
public function test() {
$this->_init();
$this->connect(); //la connexion est bien réalisée
if (!$this->error) {
$this->tabx2[100]=$this->_soapClient; //save des retours pour deconnexion hors class via __call("logour....
$this->tabx2[101]=$this->_session;
$this->disconnect(); //cela entraine l'arrêt du script
}
return $this->tabx2;
//fin des classes
$instance = new Dem();
$tabx = $instance->test(); //le script s'arrete car il appelle $this-disconnect() ce qui suit n'est pas executé
$tabx = $instance->disconnect(); //autre essai le script s'arrete ici
//tabx == tabx2 si une session a été ouverte la variable sessionKey existe
//si la deconnexion est faite ainsi cela fonctionne je n'utilise pas __soapCall('logout... mais __call('logout' ...
if (strlen($tabx[101]) > 1) {
$resultfin = $tabx[100]->__call('logout', array(sessionKey => $tabx[101]));
}