Ora che il Web service è pronto non ci rimane che creare un filmato flash che lo richiami. Flash MX ha introdotto molti nuovi componenti. Tra cui il Web service Connector e le classi Web service.
Vediamo come sfruttarle un web service con un esempio in codice AS (ActionScript):
//importiamo la classe flash import mx.services.WebService; //n.b. il componente Web serviceconnector dev'essere nella libreria //creiamo un istanza "Web service" e carichiamo il WSDL del nostro servizio //quando viene eseguita questa parte di codice flash scarica il documento wsdl ed elabora la descrizione dei tipi e delle procedure gestione_utenti_ws = new WebService("http://localhost/esempio.php?wsdl"); //esistono due eventi per gestire la fase di caricamento del wsdl gestione_utenti_ws.onFault = function(fault){ // <-- l'evento onFault viene richiamato se qualcosa va storto if(fault.faultCode!=undefined) str="libri_ws [ERROR]["+fault.faultCode+"]"+fault.faultstring; else str="Si è verificato un errore! [ERROR]:"+fault.faultstring; trace(str); //se qualcosa va male capiremo il perchè }; gestione_utenti_ws.onLoad = function(WSDLDocument){ // <-- l'evento onLoad viene richiamato se il WSDL è caricato correttamente //a questo punto possiamo usare le procedure del Web service. //effettuiamo una chiamata alla procedura getUserById utenteCall = _root.gestione_utenti_ws.getUserById(5); //<- passiamo l'id come input (è previsto da questa procedura) utenteCall.onFault = function(fault) { //se per qualche motivo la procedura dovesse fallire sarà richiamata questa funzione trace("si è verificato un errore:"+ fault.faultCode + "," + fault.faultstring); } //ed ora vediamo cosa succede quando riceviamo il risultato della procedura utenteCall.onResult = function(result) { //tutto è andato bene e c'è stato restituito l'utente trace(result['nome']); // <-- l'array che riceviamo è identico a quello ritornato dalla funzione getUserById di PHP } }
Come per il file PHP, anche questo esempio è disponibile per essere scaricato (Fla, Swf e documento HTML) o per essere testato direttamente sui server che ospitano questa guida.
Spero che questo esempio ti si stato utile per capire meglio come funziona un web service e quali sono i vantaggi che offre.
Se hai scaricato l'esempio Flash ricorda di modificare l'url passato alla classe Web Service in modo che punti al documento WSDL del tuo file esempio.php. Considera anche che Flash pone delle limitazioni di sicurezza all'utilizzo del componente webconnector ed alle classi Web service: il servizio deve infatti risiedere nello stesso dominio che offre il file swf. Se il file swf è eseguito direttamente, senza ausilio di un server web, questa limitazione non esiste. Se hai bisogno comunque di uscire dal tuo dominio non c'è problema. Puoi utilizzare un proxySOAP.