IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Soap : Wrong Version


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Soap : Wrong Version
    Bonjour,

    Je souhaite consommer un webservice Soap en version 1.1.
    Le WS demande un code client et me retourne un identifiant.
    La fonction du WS s'appelle GetUtilisateur
    L'instanciation se passe bien mais quand je demande de rechercher l'identifiant, j'ai un message d'erreur : "wrong version".
    J'imagine que c'est un des paramètres qui est mauvais.
    J'ai essayé en passant le wsdl en paramètre principal ou en passant tout dans les options sans succès.


    Voici la requête qui fonctionne avec SoapUI et que je dois mettre dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://etnic.be/services/mimesis/administration/messages/v1" xmlns:v2="http://etnic.be/types/technical/addressing/v2" xmlns:v21="http://etnic.be/types/technical/authorisation/v2">
       <soapenv:Header/>
       <soapenv:Body>
          <v1:GetUtilisateur>
             <v2:addressing>
                <!--Optional:-->
                <v2:routingFrom>http://service.etnic.be/eclass</v2:routingFrom>
                <!--Optional:-->
                <v2:routingTo>http://service.etnic.be/msis</v2:routingTo>
                <!--Optional:-->
                <v2:action>msis:administrationV1?mode=sync</v2:action>
             </v2:addressing>
             <v21:authorisation>
                <v21:userId>xxx</v21:userId>
                <v21:name></v21:name>
                <v21:firstName></v21:firstName>
                <!--Zero or more repetitions:-->
                <v21:profile>cfwb.transversal.wsmsis.admin_lect</v21:profile>
             </v21:authorisation>
             <v1:request>
                <v1:critereRecherche>
                   <!--Optional:-->
                   <v1:employerNumber>EDU1QAA</v1:employerNumber>
                   <!--Optional:-->
                   <v1:contexteCerbere>EDU</v1:contexteCerbere>
                </v1:critereRecherche>
             </v1:request>
          </v1:GetUtilisateur>
       </soapenv:Body>
    </soapenv:Envelope>
    Voici les paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $urlWsdl = 'http://localhost/wsdlSource/wsdl/MSISAdministrationService_internal_v1.wsdl';
    $uri = 'http://services-developpement.etnic.be/MSIS4_SERVICES/services/AdministrationPort';
    Voici le constructeur de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public function __construct($wsdlUrl, $userId, $users=null, $uri=null){
            $this->userId = $userId;
            $this->uri = $uri;
     
            $options = array(
                'location'=>$wsdlUrl,
                'uri'=>$uri,
                'style'=> SOAP_DOCUMENT,
                'soap_version' => SOAP_1_1,
                'trace' => 1,
                'encoding'=>'UTF-8',
                'exceptions' => true,
                'cache_wsdl'=>WSDL_CACHE_NONE);
            try{ 
                $this->soap = new SoapClient(null,$options);
                echo "<br>initialisation du client soap";
     
            }catch(Exception $e){
                echo "<br>" . $e->getTraceAsString() . "<br>". $e->getMessage();
            }
        }
    Voici la méthode qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
        public function getIdTiers(string $employeeNumber):string{
            $param = array(
                "addressing"=>array(
                    "routingFrom"=>"http://service.etnic.be/eclasse",
                    "routingTo"=>"http://servvice.etnic.be/msis",
                    "action"=>"msis:administrationV1?mode=sync"
                ),
                "authorisation"=>array(
                    "userId"=>$this->userId,
                    "name"=>"xxx",
                    "firstName"=>"xxx",
                    "profile"=>"cfwb.transversal.wsmsis.admin_lect"
                ),
                "request" => array(
                    "critereRecherche" => array(
                        "employerNumber" => $employeeNumber,
                        "contexteCerbere" => "EDU"
                    )
                )
            );
     
            try{
                $utilisateur = $this->soap->GetUtilisateur($param);    
                return $utilisateur->tiersId;
            }catch (Exception $e){
                echo "<br>" . $e->getCode() . "<br>" . $e->getMessage();
            }
            return "";
        }

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Trouvé la solution
    Après plusieurs heures de recherche, j'ai trouvé la solution.
    Le wsdl ne se trouve pas dans le même serveur que l'Uri du WS.
    Il fallait donc indiquer l'endroit de l'uri avec la fonction __setLocation($uri) juste après l'instanciation du soapClient.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        public function __construct($wsdlUrl, $uri){
            if (!empty($userId)) {
                $this->userId = $userId;
            }
            if (!empty($users)){
                $this->users = $users;
            }
            $options = array(
                'uri'=>$uri,
                'style'=> SOAP_DOCUMENT,
                'soap_version' => SOAP_1_1,
                'trace' => 1,
                'encoding'=>'UTF-8',
                'exceptions' => false,
                'cache_wsdl'=>WSDL_CACHE_BOTH);
            try{
                $this->soap = new SoapClient($wsdlUrl,$options);
                $this->soap->__setLocation($uri);
                $this->messages[] = "<br>initialisation du client soap";
            }catch(Exception $e){
                die("Problème lors de l'instanciation du client soap".$e.$this->getMessages());
            }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur : class file has wrong version 49.0, should be 48.0
    Par djolof dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 02/01/2013, 15h33
  2. Problème web Service: class file has wrong version!
    Par mumu27 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/08/2010, 10h35
  3. class file has wrong version 50.0, should be 49.0
    Par Brunettia dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 20/01/2010, 09h23
  4. problème de compilation wrong version 49 -48
    Par Tanebisse dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 18/03/2009, 14h39
  5. API jackcess-1.1.3 error class file has wrong version 49.0
    Par dalio2579 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/03/2006, 00h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo