Page 1 sur 1

Utiliser le résultat d'une requête webservice dans une autre

Posté : 28 avr. 2011, 10:26
par nurty
Hello la communauté,

Je me demande quel sont les "best practice" pour mettre en place ma problématique. Je dois offrir à un client via une interface web, la possibilité d'attacher un document à un ticket. Pour se faire j'ai deux webservice à ma disposition. Le premier va me permettre de récupérer un identifiant de ticket, et le second me permettra d'attacher un fichier au ticket.

Je dois donc faire un appel au 1er webservice et passé le résultat de celui-ci dans un champ d'entrée de mon 2ème WS. Le client doit avoir q'un unique formulaire à remplir et les deux requête doivent être exécutée à la suite sans intervention de l'utilisateur.

Ce que je pense faire :

Code : Tout sélectionner

//Ceci est du pseudo code!! <html> <body> <?php //permet de créer un ticket fonction appelWs1($infoWs1){ ... return idTicket; } //permet d'attacher un document à un ticket fonction appelWs2($idTicket,$fichier){ ... return true si ok, error code sinon. } if(isset($_REQUEST['AttachDocToRequest'])){     if(isset($_REQUEST['ticketId'])){         appelWs2($_REQUEST['ticketId],$fichier);     }else{         $ticketId = appelWs1($_REQUEST['infos'])              header('Location: cetteMemePage.php?ticketId="'.$ticketId.'");      } } ?> <form name="AttachDocToRequest" action="cetteMemePage.php" method="post">     <input type="text" name="infos">     <input type="file" name="fichier" >     <input type="submit" value="Attach Document"> </form> </body> </html>

Y a t-il un moyen plus "sexy" de faire ce genre de chose (avec javascript il me semble avoir fait qqch de sembable). Cette méthode (avec header pour recharger la page) m'oblige a passer une multitude d'info en paramètres et n'est pas très pratique.

Merci d'avances!!
nurty

Re: Utiliser le résultat d'une requête webservice dans une autre

Posté : 28 avr. 2011, 14:36
par sadeq
Bonjour,

Ton algorithme n'est pas bon car tu n'as pas besoin de faire un header sur la même page puisque le formulaire réalise de lui même le bouclage sur cette page.

Voici un algorithme simplifié :

//Ceci est du pseudo code!!
<html>
<body>
<?php
//permet de créer un ticket
fonction appelWs1($infoWs1){
...

return idTicket;
}
//permet d'attacher un document à un ticket
fonction appelWs2($idTicket,$fichier){
...

return true si ok, error code sinon.
}

// quand le formulaire est envoyé
if(isset($_REQUEST['AttachDocToRequest'])){

    // si un tickedId n'est pas envoyé alors essayer d'en obtenir un via Ws1:
    if( ! isset($_REQUEST['ticketId']))   $ticketId = appelWs1($_REQUEST['infos']);
    else $ticketId = $_REQUEST['ticketId'];

    // et dans tous les cas où un ticketId et un $fichier existent, appeler alors Ws2
    if (!empty($ticketId) && !empty($fichier)  appelWs2($ticketId, $_FILES['fichier']['tmp_name']); 
    else echo "Ticket et/ou Fichier manquant";

}
?>
<form name="AttachDocToRequest" action="cetteMemePage.php" method="post">
    <input type="text" name="infos">
    <input type="file" name="fichier" >
    <input type="submit" value="Attach Document">
</form>

</body>
</html>