`

Flex 连接 amfphp

阅读更多
amfphp安装使用
2008-10-21 10:12
http://amfphp.sourceforge.net/ 下载最新的版本

1 解压到:E:\sites\mysite\amfphp

2 修改E:\sites\mysite\amfphp\gateway.php
//$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");
$gateway->setCharsetHandler( "none", "ISO-8859-1", "ISO-8859-1" ); //修改by许雷,2008.10.21

3 services_config.xml
<?xml version="1.0" encoding="utf-8" ?>
<services-config>
    <services>
        <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
            <destination id="amfphp">
                <channels>
                    <channel ref="my-amfphp" />
                </channels>
                <properties>
                    <source>*</source>
                </properties>
            </destination>
        </service>
    </services>
   
    <channels>
            <channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
            <endpoint uri="http://www.mysite.com/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint" />   
            </channel-definition>
    </channels>   
</services-config>


4 E:\sites\mysite\amfphp\services\getUserService.php
<?php
class getUserService {
    function getUsers(){
        mysql_connect('172.20.82.173','edu','edu');
        mysql_select_db('edu5');
        mysql_query('SET NAMES UTF8');
        $sql = 'SELECT * FROM edu_user_all LIMIT 1';
        $result = mysql_query($sql);
        $rows = mysql_fetch_array($result);
        return $rows;
    }
}

//$myobj = new getUserService();
//print_r($myobj->getUsers());
?>

5 RemotingExample.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
    <mx:Script>
        <![CDATA[
        import mx.rpc.http.HTTPService;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.events.FaultEvent;
        import flash.events.Event;
        import mx.managers.CursorManager;
        internal function initApp():void {
            service.getOperation('getUsers').send();
        }
       
        internal function resultHandler(evt:ResultEvent):void {
            CursorManager.removeBusyCursor();
            myList.labelField = "username";
            myList.dataProvider = evt.result;
        }
           
        ]]>
    </mx:Script>
   
    <mx:RemoteObject id="service" showBusyCursor="true" source="getUserService" destination="amfphp">
        <mx:method name="getUsers" result="resultHandler(event)" />
    </mx:RemoteObject>
    <mx:Panel styleName="myPanel" layout="absolute" title="名册" width="200" height="400">
        <mx:List id="myList" width="100%" height="100%"></mx:List>
    </mx:Panel>
</mx:Application>

7 编译:
E:\sites\mysite\swf>mxmlc RemotingExample.mxml -locale en_US -services services_config.xml


8 如果要传递参数到服务器:
[Bindable]
public class Reservation
{
public var reservationId:int = 0;
public var fullName:String = "";
public var address:String = "";
public var city:String = "";
public var state:String = "";
public var postalCode:String = "";
public var phone:String = "";
public var dateNeeded:String = "";
public var options:String = "";
public function Reservation()
{
}
}

var dataObj:Reservation = new Reservation();

dataObj.reservationId = 0;
dataObj.fullName = fullname.text;
dataObj.address = address.text;
dataObj.city = city.text;
dataObj.state = state.text;
dataObj.postalCode = postalcode.text;
dataObj.phone = phone.text;
dataObj.dateNeeded = dateNeeded.text;
dataObj.options = selectedOptions.toString();

<mx:RemoteObject id="hs"
destination="ColdFusion" source=”reservations.ReservationService”
fault="faultHandler(event)">
<mx:method name="doCreate"
result="resultHandler(event)"/>
</mx:RemoteObject>

hs.doCreate(dataObj);

------------------------------向服务器传递参数实例--------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
    <mx:Script>
        <![CDATA[
        import mx.rpc.http.HTTPService;
        import mx.rpc.events.ResultEvent;
        import mx.rpc.events.FaultEvent;
        import flash.events.Event;
        import mx.managers.CursorManager;
        internal function initApp():void {
            //service.getOperation('getUsers').send();
            service.doCreate("test123");
        }
       
        internal function resultHandler(evt:ResultEvent):void {
            CursorManager.removeBusyCursor();
            myList.labelField = "username";
            myList.dataProvider = evt.result;
        }
           
        ]]>
    </mx:Script>
   
    <mx:RemoteObject id="service" showBusyCursor="true" source="getUserService" destination="amfphp">
        <mx:method name="getUsers" result="resultHandler(event)" />
        <mx:method name="doCreate" result="resultHandler(event)" />
    </mx:RemoteObject>
    <mx:Panel styleName="myPanel" layout="absolute" title="名册" width="200" height="400">
        <mx:List id="myList" width="100%" height="100%"></mx:List>
    </mx:Panel>
</mx:Application>

php文件:
<?php
class getUserService {
    function getUsers(){
        mysql_connect('172.20.82.173','edu','edu');
        mysql_select_db('edu5');
        mysql_query('SET NAMES UTF8');
        $sql = 'SELECT * FROM edu_user_all';
        $result = mysql_query($sql);
        $rows = mysql_fetch_array($result);
        return $rows;
    }
   
    function doCreate($str){
        return array($str.'in php');
    }
}

//$myobj = new getUserService();
//print_r($myobj->getUsers());
?>

----------分析----------------
这里:service.doCreate("test123");直接向服务器的doCreate方法传递了一个字符串
还可以传递对象。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics