[Débutant] Première communication Zend_Amf <-> flex
Bonjour,
J'essaie de coder une communication flex vers zend amf la plus simple possible.
Voici mes fichiers :
index.php
Code:
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:
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
|
<?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
{
<div class="bbcode_container">
<div class="bbcode_description">Code:</div>
<hr /><code class="bbcode_code"> <span style="color: #0000ff;">var</span> <span style="color: #800000;">msg</span>:<span style="color: #0080ff;">String</span>=myservice.Foo.<span style="color: #0080ff;">hello</span><span class="br0">(</span><span style="color: #FF0000;">"Wade"</span><span class="br0">)</span>;</code><hr />
</div> 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:
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:
1 2 3
|
var msg:String=myservice.Foo.hello("Wade"); |
par
Code:
1 2
|
var msg:String=myservice.hello("Wade"); |
J'obtiens des messages d'erreur.
Pouvez vous m'aider. Merci