Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP SOAP SESSIONS] Monter en session un objet soapClient

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP SOAP SESSIONS] Monter en session un objet soapClient

n°1472614
le20k
un ordinateur? pour koi faire?
Posté le 08-11-2006 à 21:04:15  profilanswer
 

Bonjour à tous !
 
Dans un but premier, je cherchais à monter en session une instance de soapClient afin de garder une connexion "permanente" sans avoir à recréer de connexion à chaque requete à mon server soap.
J'ai lu quelques articles référencés sur google disant que les objets de classe Soap ne pouvaient etre mis en session .... joie ...
 
D'où cette question : comment faire pour réutiliser une connexion soap existante sans avoir à en recréer une ?
 

Code :
  1. // création d'un objet soap
  2. $monSoapClient = new SoapClient("https://123.456.789.0:1234/Tralala?wsdl",
  3.   array(
  4.    "loginName" => "bob",
  5.    "password" => "motdepasse",
  6.    "trace" => 1,
  7.    "exceptions" => 1,
  8.    "_soap_version" => 1.2
  9.   ));
  10. // ouverture d'une session
  11. $instance = $monSoapClient->__soapCall(
  12.   "OpenConnectionAndBeginSession",
  13.   array(
  14.    "loginName" => "bob",
  15.    "password" => "motdepasse",
  16.    "appID" => "whatever",
  17.    "appName" => "myAppName",
  18.    "qbFileName" => "fichier_quickbooks",
  19.    "reqFileMod" => "MultiUser"
  20.   ));
  21. // exemple de passage de requete
  22. $resultat_xml = ($monSoapClient->__soapCall("processRequest",array('instance'=>$instance,'request'=>$ma_requete_xml)));


 
L'idée serait de faire quelque chose du genre, et ce, quel que soit l'endroit où s'est exécuté  :
 

Code :
  1. if(!isset($monSoapClient)) {
  2. // code exécuté uniquement 1 seule fois de toute la session de travail dans l'application web
  3. $monSoapClient = creer_un_objet_soap();
  4. }
  5. if(!isset($mon_instance)) {
  6. // code exécuté uniquement 1 seule fois de toute la session de travail dans l'application web
  7. $mon_instance = creer_une_instance();
  8. }
  9. $resultat_xml = executer_une_requete( $ma_requete , $monSoapClient, $mon_instance );


 
Pas très clair tout ça, mais c'est le mieux que je puisse faire :S
 
Toute aide est vraiment la bienvenue !  :hello:


---------------
dieu créa l'homme et meuh fit la vache
mood
Publicité
Posté le 08-11-2006 à 21:04:15  profilanswer
 

n°1723296
rlamarche
Posté le 24-04-2008 à 09:03:52  profilanswer
 

Salut,
 
J'ai réussi à conserver une session Soap en php avec des webservice Axis2 en positionnant le "scope" à "transportSession" dans mon fichier service.xml de Axis2.
Ensuite, dans mon SoapClient en php, je met l'option  "trace" à true et je récupère le cookie de session avec une expression régulière sur la chaîne : soapClient->__getLastResponseHeaders() que je positionne ensuite avec soapClient->__setCookie('JSESSIONID', $cookie).
 
J'ai jamais réussi à faire pareil avec des SoapSession.
 
De plus, mes services n'étaient jamais détruits par Axis2 (quand il tourne sur Apache Tomcat), j'ai dû modifier la servlet Axis2 pour qu'elle les supprime au bout de 30 secondes. (je me suis basé sur le "HttpServer" de Axis2 qui lui pensait à supprimer le service. Je pense que c'est un bug de axis2 le fait qu'il ne détruisai pas le service...
 
 
 

le20k a écrit :

Bonjour à tous !
 
Dans un but premier, je cherchais à monter en session une instance de soapClient afin de garder une connexion "permanente" sans avoir à recréer de connexion à chaque requete à mon server soap.
J'ai lu quelques articles référencés sur google disant que les objets de classe Soap ne pouvaient etre mis en session .... joie ...
 
D'où cette question : comment faire pour réutiliser une connexion soap existante sans avoir à en recréer une ?
 

Code :
  1. // création d'un objet soap
  2. $monSoapClient = new SoapClient("https://123.456.789.0:1234/Tralala?wsdl",
  3.   array(
  4.    "loginName" => "bob",
  5.    "password" => "motdepasse",
  6.    "trace" => 1,
  7.    "exceptions" => 1,
  8.    "_soap_version" => 1.2
  9.   ));
  10. // ouverture d'une session
  11. $instance = $monSoapClient->__soapCall(
  12.   "OpenConnectionAndBeginSession",
  13.   array(
  14.    "loginName" => "bob",
  15.    "password" => "motdepasse",
  16.    "appID" => "whatever",
  17.    "appName" => "myAppName",
  18.    "qbFileName" => "fichier_quickbooks",
  19.    "reqFileMod" => "MultiUser"
  20.   ));
  21. // exemple de passage de requete
  22. $resultat_xml = ($monSoapClient->__soapCall("processRequest",array('instance'=>$instance,'request'=>$ma_requete_xml)));


 
L'idée serait de faire quelque chose du genre, et ce, quel que soit l'endroit où s'est exécuté  :
 

Code :
  1. if(!isset($monSoapClient)) {
  2. // code exécuté uniquement 1 seule fois de toute la session de travail dans l'application web
  3. $monSoapClient = creer_un_objet_soap();
  4. }
  5. if(!isset($mon_instance)) {
  6. // code exécuté uniquement 1 seule fois de toute la session de travail dans l'application web
  7. $mon_instance = creer_une_instance();
  8. }
  9. $resultat_xml = executer_une_requete( $ma_requete , $monSoapClient, $mon_instance );


 
Pas très clair tout ça, mais c'est le mieux que je puisse faire :S
 
Toute aide est vraiment la bienvenue !  :hello:



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP SOAP SESSIONS] Monter en session un objet soapClient

 

Sujets relatifs
Parse error dans code PHP/MySQL correct[PHP]Envoi de mail au format html.
Bible Des Failles PHP[RESOLU] PHP EXIF et retouche d'image
[PHP/SQLITE] Lecture des données dans un fichier .dbProblème de logique objet
Faire connaisance avec PHPAuthentification sans session. [Résolu]
Faille de sécurité en PHP ? etc/passwd ?[PHP] Formatage des dates
Plus de sujets relatifs à : [PHP SOAP SESSIONS] Monter en session un objet soapClient


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR