Bonjour,

J'essaie de coder une communication flex vers zend amf la plus simple possible.

Voici mes fichiers :

index.php

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
 
 
<?php
error_reporting(E_ALL );
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1); 
  
// PATH_SEPARATOR
set_include_path('../lib/vendor/ZendFramework/library');
 
require_once("Zend/Loader/Autoloader.php");
 
$autoloader = Zend_Loader_Autoloader::getInstance();
 
// Attached class
 
class Foo
{
    /**
     * @param  string $name
     * @param  string $greeting
     * @return string
     */
    public function hello($name, $greeting = 'Hello')
    {
        return $greeting . ', ' . $name;
    }
}
 
$server = new Zend_Amf_Server();
$server->setClass('Foo');
$server->addDirectory(dirname(__FILE__) .'/../services/');
$response = $server->handle();
echo $response;
 
 
?>
quand on appelle cette page dans le navigateur j'obtiens le message suivant :

Mon fichier mxml dans flex builder :

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

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
<mx:RemoteObject id="myservice"
    fault="faultHandler(event)"
    showBusyCursor="true"
    destination="zend">
</mx:RemoteObject>

	<mx:TextInput id="nom"   top="10"  left="10"  />
	<mx:TextInput id="type"  top="40"  left="10"  />
	<mx:Button    click="transmit()"           top="70"  left="10"  />
	<mx:TextArea  id="debug" top="200" left="200" height="500" width="500" />
	
	<mx:Script>
		<![CDATA[
		
			function transmit():void
			{
		
Code : Sélectionner tout - Visualiser dans une fenêtre à part
		var msg:String=myservice.Foo.hello("Wade");
Application.application.nom.text+=msg; } function faultHandler(event:Event):void { Application.application.debug.text+=event; trace(event); } ]]> </mx:Script> </mx:Application>
Et mon fichier services-config.xml

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
 
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
    <services>
        <service id="zend-service"
            class="flex.messaging.services.RemotingService"
            messageTypes="flex.messaging.messages.RemotingMessage">
            <destination id="zend">
                <channels>
                    <channel ref="zend-endpoint"/>
                </channels>
                <properties>
                    <source>*</source>
                </properties>
            </destination>
        </service>
    </services>
    <channels>
        <channel-definition id="zend-endpoint"
            class="mx.messaging.channels.AMFChannel">
            <endpoint uri="http://localhost/~karas/zf/ngs/asg/01/web/index.php"
                class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>
    </channels>
</services-config>
Et bien quand j'appuie sur le bouton il ne se passe rien.
Je sais que le bouton marche car quand je remplace :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
		var msg:String=myservice.Foo.hello("Wade");
par

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
		var msg:String=myservice.hello("Wade");
J'obtiens des messages d'erreur.

Pouvez vous m'aider. Merci