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

Petit nouveau ! | 1 Messages

28 avr. 2011, 10:26

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

28 avr. 2011, 14:36

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>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène