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

WebDev Discussion :

Appel WS en soap [WB20]


Sujet :

WebDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Par défaut Appel WS en soap
    Bonjour, voici un code PHP qui fonctionne (modifié volontairement) et je voudrais le mettre en WLangage.

    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
    <?php 
    header("Content-type: text/xml"); 
    try 
    { 
      $clientSOAP = new SoapClient( null, 
        array ( 
          'uri' => 'http://www.xxxxxxxx.fr/api.php', 
          'location' => 'http://www.xxxxxxxx.fr/api.php', 
          'login' => 'user', 
          'password' => 'pass', 
          'trace' => 1, 
          'exceptions' => 0 
      )); 
     
      $ret = $clientSOAP->__call('get_ads', array( 
            'min_price'=>30000, 
            'max_price'=>70000, 
            'min_km'=>60001, 
            'max_km'=>100000, 
            'min_year'=>2012, 
            'max_year'=>2012, 
            'nb_results'=>10, 
            'txt'=>'dpf', 
            'page'=>'' 
            )); 
     
    //echo "Request :\n".htmlspecialchars($clientSOAP ->__getLastRequest()) ."\n"; 
    //echo "Response:\n".htmlspecialchars($clientSOAP ->__getLastResponse())."\n"; 
    echo $ret; 
    } 
    catch(SoapFault $f) 
    { 
      echo $f; 
    } 
     
    ?>

    Le WSDL n'existe pas à proprement parler donc je ne peux pas l'intégrer à mon projet tout bêtement.

    J'ai essayé :

    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
    SOAPAjouteEntête("uri","http://www.xxxxxxxx.fr/api.php","")
    SOAPAjouteEntête("location","http://www.xxxxxxxx.fr/api.php","")
    SOAPAjouteEntête("login","login","") 
    SOAPAjouteEntête("password","password","") 
    SOAPAjouteEntête("trace","1","") 
    SOAPAjouteEntête("exceptions","0","")
     
     
    SOAP.Valeur[1] = "30000"
    SOAP.Nom[1] = "min_price"
    SOAP.Type[1] = SOAPTypeChaîne
     
    SOAP.Valeur[2] = "70000"
    SOAP.Nom[2] = "max_price"
    SOAP.Type[2] = SOAPTypeChaîne
     
    ...
     
     
    SI SOAPExécute("http://www.xxxxxxxx.fr/api.php","get_ads")=Faux ALORS Info("c'est pété")
    Info(SOAPDonneRésultat(SOAPRésultatXML))
    Ne fonctionne pas.

    Avez-vous une idée sur comment me dépêtrer de ce problème ?

    Amicalement,

    Eric.

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Par défaut
    Je viens de tester ceci :

    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
    32
    33
    34
    35
    36
    37
    38
    messagexml est une chaîne
    resexecutionxml est un booléen
     
    messagexml=[
    	<SOAP-ENV:Envelope
    	SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    	xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    	xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    	xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    	<SOAP-ENV:header>
    	<uri>http://www.xxxxxxxx.fr/api.php</uri>
    	<location>http://www.xxxxxxxx.fr/api.php</location>
    	<login>login</login>
    	<password>pass</password>
    	<trace>1</trace>
    	<exceptions>0</exceptions>
    	</SOAP-ENV:header>
    	<SOAP-ENV:body>
    	<min_price>30000</min_price>
    	<max_price>70000</max_price>
    	<min_km>60001</min_km>
    	<max_km>100000</max_km>
    	<min_year>2012</min_year>
    	<max_year>2012</max_year>
    	<nb_results>10</nb_results>
    	<page>1</page>
    	</SOAP-ENV:body>
    	</SOAP-ENV:Envelope>
    ]
    resexecutionxml=SOAPExécuteXML("http://www.xxxxxxxx.fr/api.php",messagexml,"get_ads")
     
    SI resexecutionxml=Vrai ALORS
    	Info(SOAPDonneRésultat(SOAPRésultatHTTP))
    SINON	
    	Info(SOAPErreur(SOAPErrMessage))
    	Erreur(ErreurInfo(errComplet))
    FIN
    L'exécution se fait puisque je reçois un XML mais le XML me dit toujours

    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
    HTTP/1.1 401 Unauthorized
    Server: nginx/1.8.0
    Date: Fri, 13 Nov 2015 14:27:25 GMT
    Content-Type: text/html
    Content-Length: 194
    Connection: close
    WWW-Authenticate: Basic realm="Login api"
     
    <html>
    <head><title>401 Authorization Required</title></head>
    <body bgcolor="white">
    <center><h1>401 Authorization Required</h1></center>
    <hr><center>nginx/1.8.0</center>
    </body>
    </html>
    Que mon XML de départ soit vide ou que je mette choucroute... toujours le même message de retour.

    Amicalement,

    Eric.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Par défaut
    Voici la solution qui fonctionne :

    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
    32
    33
    34
    35
    messagexml est une chaîne
    messagexml=[
    	<SOAP-ENV:Envelope
    	SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    	xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    	xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    	<SOAP-ENV:Header>
    	<uri>http://www.xxxxxxx.fr/api_ads.php</uri>
    	<location>http://www.xxxxxxx.fr/api_ads.php</location>
    	<login>login</login>
    	<password>password</password>
    	<trace>1</trace>
    	<exceptions>0</exceptions>
    	</SOAP-ENV:Header>
    	<SOAP-ENV:Body>
    	<get_ads>
    	<min_price>%9</min_price>
    	<max_price>%10</max_price>
    	<min_km>%11</min_km>
    	<max_km>%12</max_km>
    	<min_year>%13</min_year>
    	<max_year>%14</max_year>
    	<nb_results>%15</nb_results>
    	</get_ads>
    	</SOAP-ENV:Body>
    	</SOAP-ENV:Envelope>
    ]
    messagexml=ChaîneConstruit(messagexml,COMBO_PrixMin..ValeurAffichée,COMBO_PrixMax..ValeurAffichée,COMBO_KmsMin..ValeurAffichée,COMBO_KmsMax..ValeurAffichée,DateVersChaîne(SAI_Date_MEC,"AAAA"),DateVersChaîne(SAI_Date_MEC,"AAAA"),50)
    SI PAS HTTPRequête("http://www.xxxxxxx.fr/api_ads.php","","",messagexml,"text/xml","login","password") ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON	
    	SourceXML est une chaîne = HTMLVersTexte(HTTPDonneRésultat(httpRésultat))
    	// Traitement du XML
    FIN
    Amicalement,

    Eric.

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

Discussions similaires

  1. Appel Web Service SOAP - handshake_failure
    Par vince29 dans le forum Services Web
    Réponses: 0
    Dernier message: 30/04/2015, 10h12
  2. appel web service soap rpc-encoded multi-ref
    Par arnaud.b dans le forum Pentaho
    Réponses: 0
    Dernier message: 18/01/2010, 15h33
  3. Appels de Web services (SOAP) ?
    Par ovdbc dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 17/10/2007, 11h28
  4. Client d'appel SOAP : quelle API choisir ?
    Par g_rare dans le forum Services Web
    Réponses: 8
    Dernier message: 09/07/2007, 18h13
  5. [SOAP] API pour appels asynchrones
    Par Dar Shak dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 26/04/2005, 08h57

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