Client Soap

Petit nouveau ! | 2 Messages

05 oct. 2009, 10:01

Bonjour,

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

merci
Modifié en dernier par js92 le 05 oct. 2009, 17:49, modifié 1 fois.

ViPHP
ViPHP | 4674 Messages

05 oct. 2009, 11:26

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]) ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Administrateur PHPfrance
Administrateur PHPfrance | 977 Messages

05 oct. 2009, 12:26

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
pro : http://www.ohweb.fr -> studio de développement en PHP, expertise en e-commerce, certifié PrestaShop
perso : http://www.olecorre.com -> un dico de termes informatiques

J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone. [Bjarne Stroustrup]

Petit nouveau ! | 2 Messages

05 oct. 2009, 12:36

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