Page 1 sur 1

Client Soap

Posté : 05 oct. 2009, 10:01
par js92
Bonjour,

la deconnexion fonctionne maintenant (si j'avais fait plus attention!)
$this->retour = $this->_soapClient->__soapCall('logout', $parameters);

merci

Re: Client Soap

Posté : 05 oct. 2009, 11:26
par Hywan
Hey :-),

Aucune idée car il nous manque trop d'information. Ton discours n'est pas précis du tout. Penses que nous sommes des agents extérieurs à ton problème, tu dois être capable de nous faire comprendre ton contexte en deux phrases.

D'où vient la classe ? Dans quel cas cela ne marche-t-il pas ? Que veux-tu faire avec ? De où vers où ?
De plus, serait-il envisageable d'avoir une mise en forme pour le code (voir la balise

Code : Tout sélectionner

ou [php]) ?

Re: Client Soap

Posté : 05 oct. 2009, 12:26
par Cobaye
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: Client Soap plus de précison

Posté : 05 oct. 2009, 12:36
par js92
Je ne peux mettre tout le code mais je vous propose un extrait qui vous peremettrait de voir.

Les parametres sont issus d'un fichier configuration et lus dans init: l'url du wsdl le login et mot de passe
La connexion est toujours réalisée avec succès. La deconnexion à l'application ne peut se faire que via __call('logout' ... qui est noté deprecated

d'avance merci .


extrait

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])); }