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

Flex Discussion :

Probleme AMFPHP - RemoteObject - Endpoint


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Probleme AMFPHP - RemoteObject - Endpoint
    Bonjour,

    Lorsque j'appelle mon service avec RemoteObject directement en MXML ça marche nickel, par contre quand j'essait de l'appeler en Action script ça marche plus. D'où vient le problème??
    Aucune erreur n'est signaler mais rien ne se passe lors du click sur le bouton.

    NB: j'ai Flex SDK 3.2


    Code en MXML (ça marche)

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
     
    	<mx:RemoteObject id="servRO" source="ServComposants" endpoint="http://localhost/amfphp/gateway.php" destination="amfphp" showBusyCursor="true">
    		<mx:method name="serviceListerComposants" result="resultatOK(event)" fault="resultatKO(event)"></mx:method>
    	</mx:RemoteObject>
     
    	<mx:Script>
     
    	    <![CDATA[
    	        import mx.rpc.events.FaultEvent;
    	        import mx.rpc.events.ResultEvent;
    	        import mx.controls.Alert;
     
    	        public function executerService():void
    	        {
    	            servRO.getOperation('serviceListerComposants').send();
    	        }
     
     
    	        public function resultatOK(e:ResultEvent):void
    	        {
    	            grilleComposants.dataProvider = e.result as Array;
    	        }
     
     
    	        public function resultatKO(e:FaultEvent):void
    	        {
    	            Alert.show(e.fault.faultString, e.fault.faultCode.toString());
    	        }
     
    	    ]]>
     
    	</mx:Script>
     
    	<mx:DataGrid id="grilleComposants" x="10" y="10" width="700" rowCount="10">
            <mx:columns>
            	<mx:DataGridColumn headerText="Catégorie" dataField="nomCategorie" width="200"/>
            	<mx:DataGridColumn headerText="Composant" dataField="nomComposant" width="400"/>
            	<mx:DataGridColumn headerText="Prix" dataField="prixComposant" width="100"/>
            </mx:columns>       
    	</mx:DataGrid>
     
    	<mx:Button x="10" y="260" label="Appeler service" id="btn_ro" click="executerService()"/>
     
    </mx:Application>
    code action script entièrement pour le RemoteObjet (ça marche pas)

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
     
    	<mx:Script>
     
    	    <![CDATA[
    	    	import mx.rpc.remoting.RemoteObject;
    	        import mx.rpc.events.FaultEvent;
    	        import mx.rpc.events.ResultEvent;
    	        import mx.controls.Alert;
     
    	        public function executerService():void
    	        {
    				var servRO:RemoteObject = new RemoteObject();
     
    				// Paramétrage
    				servRO.source = "ServComposants";
    				servRO.destination = "amfphp";	
    				servRO.endpoint = "http://localhost/amfphp/gateway.php";
     
    				// Événements si succès ou erreur
    				servRO.serviceListerComposants.addEventListener("result", resultatOK);
    				servRO.serviceListerComposants.addEventListener("fault", resultatKO);
     
    				// Exécution de la méthode
    				servRO.serviceListerComposants();
    	        }
     
     
    	        public function resultatOK(e:ResultEvent):void
    	        {
    	            grilleComposants.dataProvider = e.result as Array;
    	        }
     
     
    	        public function resultatKO(e:FaultEvent):void
    	        {
    	            Alert.show(e.fault.faultString, e.fault.faultCode.toString());
    	        }
     
    	    ]]>
     
    	</mx:Script>
     
    	<mx:DataGrid id="grilleComposants" x="10" y="10" width="700" rowCount="10">
            <mx:columns>
            	<mx:DataGridColumn headerText="Catégorie" dataField="nomCategorie" width="200"/>
            	<mx:DataGridColumn headerText="Composant" dataField="nomComposant" width="400"/>
            	<mx:DataGridColumn headerText="Prix" dataField="prixComposant" width="100"/>
            </mx:columns>       
    	</mx:DataGrid>
     
    	<mx:Button x="10" y="260" label="Appeler service" id="btn_ro" click="executerService()"/>
     
    </mx:Application>
    Remarque : dans flex builder l'auto-complétion ne trouve pas "endpoint" pour l'objet servRO (RemoteObjet)

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Pour utiliser RemoteObject en AS c'est plus compliqué que cela...
    J'avais fait des tests il y a quelques temps et j'avais utilisé 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    private static var amfphp : RemoteObject ;
     
    		public static function sendMsg( source : String, method : String, 
    										result : Function, fault : Function, 
    										... params ) : AsyncToken
    		{
    			if ( ! amfphp )
    			{
    				amfphp = new RemoteObject( "amfphp" ) ;
    				amfphp.showBusyCursor = true ;
    				// listener par défaut
    				// pour éviter que ce listener soit exécuté il faut appeler event.preventDefault() ;
    				// dans le onFault du responder (cf AbstractInvoker.as ligne 166)
    				amfphp.addEventListener( FaultEvent.FAULT, onFault ) ;
    			}
    			amfphp.source = source ;
    			var op : AbstractOperation = amfphp.getOperation( method ) ;
    			if ( op )
    			{
    				op.arguments = params ;  // si params passé directement à send ça ne fonctionne pas !!
    				var token : AsyncToken = op.send() ;
    				if ( ( token ) && ( ( result != null ) || ( fault != null ) ) )
    				{
    					// result ET fault doivent etre définis sinon runtime error (flex ne vérifie pas !!!)
    					if ( result == null )
    						result = onResultNull ;
    					if ( fault == null )
    						fault = onFaultNull ;
    					token.addResponder( new Responder( result, fault ) ) ;
    				}
    				return token ;
    			}
    			return null ;
    		}
     
    		private static function onFault( event : FaultEvent ) : void
    		{
    			Alert.show( event.toString() ) ;
    		}	
     
    		private static function onResultNull( event : ResultEvent ) : void
    		{
    			trace( "[CBUtil][onResultNull]" + event ) ;
    		}	
     
    		private static function onFaultNull( event : FaultEvent ) : void
    		{
    			trace( "[CBUtil][onResultNull]" + event ) ;
    		}
    Ce code correspond à une classe utilitaire static permettant d'envoyer des messages avec la méthode sendMsg.

    Ceci est donné sans garantie que ce soit LA solution. De plus je n'utilise plus les RemoteObject donc je n'ai pas été plus en profondeur dans leur mode de fonctionnement...

  3. #3
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Salut,

    sinon tu peux utiliser les classes de remoting de Francis Bourre

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Par défaut
    Bonjour.
    As tu essayer d'enlever le endpoint de ton code et de le mettre dans un fichier "services-config.xml" (dans l'arborescence de ton projet)??

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

Discussions similaires

  1. [Flex4] AMFPHP et RemoteObject : couldn't fetch mysqli
    Par Pwill dans le forum Flex
    Réponses: 8
    Dernier message: 17/09/2010, 09h25
  2. Amfphp remoteObject : gestion des erreurs
    Par Australia dans le forum Flex
    Réponses: 28
    Dernier message: 30/04/2010, 15h47
  3. ZendAMF vs AMFphp probleme de performance ?
    Par T_bo_ dans le forum Flex
    Réponses: 1
    Dernier message: 02/06/2009, 00h03
  4. probleme utilisation amfphp
    Par soulflow dans le forum Flex
    Réponses: 2
    Dernier message: 30/03/2009, 14h45
  5. Parametre avec RemoteObject (amfphp)
    Par lyrix dans le forum Flex
    Réponses: 2
    Dernier message: 13/11/2008, 12h39

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