Flex WebService en MXML – Envoyer des requêtes et traiter le résultat (exemple)
Vous pouvez créer une instance du composant Flex WebService en utilisant du MXML.
A ce moment-là, vous devrez spécifier un "id" et donner une valeur à la propriété "wsdl", comme dans l'exemple suivant:
<mx:WebService id="statesService" wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl" />
Les Web Services définissent une ou plusieurs méthodes ou opérations. Vous devez les définir dans l'instance de WebService en utilisant le tag <mx:operation> à l'intérieur du tag <mx:WebService>. Le tag <mx:operation> nécessite au minimum un nom. L'exemple suivant définit une operation appelée "getCountries". Ce qui veut dire que le document WSDL doit définit une opération getCountries:
<mx:WebService id="statesService" wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl"> <mx:operation name="getCountries"/> </mx:WebService>
Une fois que vous avec définit l'instance de WebService et une opération, vous êtes capables d'appeler la méthode et de traiter le résultat.
Appeler les méthodes d'un Web Service
Toutes les opérations que vous définissez dans l'instance d'un composant WebService sont accessibles comme des propriétés de l'instance. Par exemple, dans le code précédent, on a créer une instance de WebService appelée statesService avec une opération appelée getCountries. Cela veut dire que vous pouvez utiliser de l'ActionScript pour référencer l'opération comme statesService.getCountries.
Vous pouvez ensuite appeler getCountries comme si c'était une méthode de statesService:
statesService.getCountries();
Vous pouvez aussi appeler la méthode send() de getCountries:
statesService.getCountries.send();
Chacune de ces manières d'appeler une opération est équivalente dans la plupart des cas. Le seul moment où vous devez utiliser l'une au lieu de l'autre est quand vous déclarez les paramètres de l'opération en utilisant du MXML. Dans ces cas-là, vous devez utiliser la méthode send().
Récupérer la réponse de l'appel au Web Service
Quand l'opération d'un web service retourne un résultat, vous pouvez le gérer de deux manières: soit en donnant explicitement une fonction d'handle à l'événement "result", soit en utilisant le data binding. Ensuite, une fois que le résultat est retourné, vous pouvez récupérer la valeur du résultat dans la propriété "lastResult" de l'opération.
Toutes les opérations des web services lancent des événement "result" quand le résultat est retourné. Le code suivant dit à l'application d'appeler la fonction trace() une fois que le résultat est retourné:
<mx:WebService id="statesService"
wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl">
<mx:operation name="getCountries" result="trace('Un résultat a été retourné')"/>
</mx:WebService>
Ici, on utilise le même code, sauf que l'on trace le résultat de l'opération en utilisant statesService.getCountries.lastResult:
<mx:WebService id="statesService" wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl"> <mx:operation name="getCountries" result="trace(statesService.getCountries.lastResult)"/> </mx:WebService>
Voici un exemple simple qui charge un tableau de pays et utilise cette donnée pour peupler une ComboBox:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center"
verticalAlign="middle">
<mx:Script>
<![CDATA[
private function clickHandler(event:MouseEvent):void{
statesService.getCountries.send();
}
]]>
</mx:Script>
<mx:WebService id="statesService"
wsdl="http://www.rightactionscript.com/states/webservice/StatesService.php?wsdl">
<mx:operation name="getCountries"/>
</mx:WebService>
<mx:Panel title="Appel à un Web Service"
paddingBottom="30" paddingLeft="30" paddingRight="30" paddingTop="30">
<mx:Button label="Appel au WebService" click="clickHandler(event)"/>
<mx:ComboBox id="country" dataProvider="{statesService.getCountries.lastResult}"/>
</mx:Panel>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
Articles similaires
- Flex WebService en MXML – Envoyer des paramètres directement ou avec le tag mx:request
- Flex WebService en ActionScript – Envoyer des requêtes et traiter le résultat
- Flex Curseur – Curseur automatiquement occupé pendant les requêtes de SWFLoader, HttpService, WebService et RemoteObject
- Flex HTTPService – Envoyer des paramètres avec la propriété request
- Flex WebService – Conversion de type et types SOAP (XSD)






27 janvier 2011
Bonjour,
Merci beaucoup pour ce tuto, marche parfaitement avec un WebService provenant d'une classe java
Cordialement Laurent
16 septembre 2011
L'adresse du webservice n'est plus bonne! L'exemple ne va plus.
16 septembre 2011
Oui, mais ce n'est pas moi qui le gère, et il est difficile de trouver un WS ouvert et public
Fabien
28 mars 2012
Tu peux utiliser cette wsdl si tu veux : https://soapv2.kuantic.com/test/activation?WSDL