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

Langage PHP Discussion :

Créer une enveloppe SOAP complexe [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Créer une enveloppe SOAP complexe
    Bonjour,

    Je galère pas mal à essayer de créer une requête SOAP dont l'enveloppe est ci dessous :

    Code xml : 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
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:GCE" xmlns:com="http://www.generix.fr/technicalframework/businesscomponent/applicationmodule/common" xmlns:ser="http://www.generix.fr/technicalframework/business/webservice/server">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:execute>
             <com:ctx entity="1000" language="FRA" target="VINT" user="monlogin" password="monpassword"/>
             <com:BusinessViewServiceexecuteIn>
                <com:context>
                   <com:entity>1000</com:entity>
                   <com:identification>
                      <com:code>CODEXXX</com:code>
                   </com:identification>
                </com:context>
                <com:businessView>VAD_SERV_APPEL_DISPO</com:businessView>
                <com:cinematic>forward(0)</com:cinematic>
                <com:param name="chp:Reference" value="AG100ROH"/>
                <com:param name="chp:Qtecde" value="10"/>
             </com:BusinessViewServiceexecuteIn>
          </urn:execute>
       </soapenv:Body>
    </soapenv:Envelope>

    J'ai déjà utilisé plusieurs fois l'objet soap de PHP5, mais de manière assez simple.
    Ici l'enveloppe est assez complexe avec tous ces attributs et ces noeuds. J'ai essayé de construire ma requête à partir de SoapVar + XSD_ANYXML , avec des __soapCall etc...mais rien n'y fait.

    Sachant que je dispose de l'enveloppe complète, existe t'il un moyen simple d'utiliser cette enveloppe pour requeter mon service SOAP ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai finalement réussi à m'en sortir en utilisant ce bon vieux curl. Devant la complexité de l'enveloppe SOAP il me semble en effet plus aisé d'utiliser ce genre de technique plutôt que d'utiliser l'objet PHP SOAP.

    Je vous recopie ci dessous ma solution car cela peut vous aider si vous rencontrez la même problématique.

    Code php : 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    $wsdl = "http://192.168.0.19:7006/gce160/services/literal/businessViewService?wsdl";
     
    //SOAP ENVELOPPE
    $body = '<?xml version="1.0"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:GCE" xmlns:com="http://www.generix.fr/technicalframework/businesscomponent/applicationmodule/common" xmlns:ser="http://www.generix.fr/technicalframework/business/webservice/server">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:execute>
             <com:ctx entity="1000" language="FRA" target="VINT" user="monuser" password="monpassword"/>
             <com:BusinessViewServiceexecuteIn>
                <com:context>
                   <com:entity>1000</com:entity>
                   <com:identification>
                      <com:code>CODE</com:code>
                   </com:identification>
                </com:context>
                <com:businessView>VAD_SERV_APPEL_DISPO</com:businessView>
                <com:cinematic>forward(0)</com:cinematic>
                <com:param name="chp:Reference" value="AG100ROH"/>
                <com:param name="chp:Qtecde" value="10"/>
             </com:BusinessViewServiceexecuteIn>
          </urn:execute>
       </soapenv:Body>
    </soapenv:Envelope>';
     
     
    //Header SOAP request
    $headers = array( 
        'Content-Type: text/xml; charset="utf-8"', 
        'Content-Length: '.strlen($body), 
        'Accept: text/xml', 
        'Cache-Control: no-cache', 
        'Pragma: no-cache', 
        'SOAPAction: "customerSearch"'
    ); 
     
    //Curl init
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_URL, $wsdl); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_USERAGENT, 'php_script');
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
     
     
    $data = curl_exec($ch);

    Il ne reste plus ensuite qu'à parser le retour $data.

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

Discussions similaires

  1. Créer une enveloppe soap avec python suds
    Par roadbecri dans le forum Général Python
    Réponses: 11
    Dernier message: 09/01/2015, 11h07
  2. Réponses: 1
    Dernier message: 13/04/2010, 08h48
  3. [gSOAP] Créer une requete soap
    Par therealmancool dans le forum C
    Réponses: 7
    Dernier message: 17/09/2009, 15h19
  4. Réponses: 1
    Dernier message: 19/03/2008, 07h57
  5. Récupérer un fichier joint dans une enveloppe SOAP
    Par Raylemon dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 04/04/2006, 17h54

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