Wednesday, February 10, 2010

Calling Flash Remote Service in Flash with Zend amf

Steps:

  1. Download Zend amf library and put it into your htdocs (www root) folder.
  2. Create a Gateway.php for connection
  3. Create your service using php
  4. Connect to service using ActionScript in TestService.fla
  5. Run the TestService.fla

Step 1:

  1. Download Zend amf library: http://framework.zend.com/download/amf
  2. Unzip and put the Zend folder into your htdocs folder

Step 2:

  1. Create a folder named “service” under htdocs.
  2. Create a Gateway.php under htdocs.
  3. Gateway.php:

<?php
	require('./Zend/Amf/Server.php');
	//require('./services/HowAreYou.php');
	
	$server = new Zend_Amf_Server();
	$server->addDirectory(dirname(__FILE__) .'/services/');
	//$server->setClass('HowAreYou');
	$response = $server->handle();
	echo $response;
?>




Step 3:




  1. Create your remote service “HowAreYou.php” under “service” folder


  2. HowAreYou.php



<?php
class HowAreYou{
    /*
     * @param  string $receiveMsg
     * @return string $replyMsg
     */
	function sendStr($yourname){
		return "$yourname, 你好!";
	} 
}
?>


Step 4:




  1. Write ActionScript in your TestService.fla file


  2. In TestService.fla



stop();
var connection:NetConnection; // Initialize NetConnection Object
var responder:Responder;  // Initialize Responder Object
 
//Construct Instance
responder = new Responder(onResult, onFault);  // Show Receive Data
connection = new NetConnection; 
// Setting
var gateway:String = "http://localhost/Gateway.php"; 
connection.connect(gateway);  // Connect to Zend amf
// Data Receieve
function onResult(Result:String):void { 
   trace(Result);
}
// Fail
function onFault():void {  
    trace("Connection Fail");
}
// Call Remoting Service's Method: (Class.Method, reaonder, parameter)
connection.call("HowAreYou.sendStr",responder,"your_message");


Step 5:




  1. Test(Run) your TestService.fla


  2. you will receive “your_message,你好!”  on the output window

Tuesday, February 9, 2010

解決 amfphp 中文字串亂碼問題

In your htdocs\amfphp\gateway.php

Comment this line of code:

//$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");

Add this line of code:

$gateway->setCharsetHandler( "utf8_decode", "UTF-8", "UTF-8" );