zoukankan      html  css  js  c++  java
  • amfphp的使用

    amfphp的两种方式
    //as方式
    var ro_login:RemoteObject;
    ro_login = new RemoteObject();
    ro_login.source = "User";
    ro_login.destination = "用户相关操作";//可选参数
    ro_login.endpoint = "http://localhost/amfphp/gateway.php";
    ro_login.login.addEventListener("result", resultHandler);//RemoteObject是动态类,可以动态添加属性,这里login就是User.php里类User的login方法。
    ro_login.login.addEventListener("fault", onFault);
     
    //MXML方式
    <mx:RemoteObject
            id="service_user"
            destination="获取用户服务.."
            endpoint="{'http://localhost/amfphp/gateway.php'}"
            source="User" >
        <mx:method name="login" result="resultHandler(event)"
         fault="mx.controls.Alert.show(event.fault.faultString)"/>
    </mx:RemoteObject>
     
    注意:如果amfphp端返回值形式为:return $list,则直接使用ResultEvent(data).result接收;
     
    如果以return array('list'=>$list)返回,则使用ResultEvent(data).result.list接收
     
    1.php接口文件名必须和类名相同
    例如:paint.php中的类必须用class paint{…} 
    2.php接口文件放置在amfphp/services/下即可通过Flex调用
    PS:可以在amfphp/browser/index.html调试接口
    PPS:可以在globals.php更改$servicesPath
     
    3.如果接口返回中文字符的话,需要在amfphp/gateway.php的line127 设置对应的字符串编码
    例如:$gateway->setCharsetHandler(”utf8_decode”, “UTF-8″, “UTF-8″); [string mode][string phpCharset][string sqlCharset]
     
    第一个参数是设定要使用何种方式来重新编码传输的数据,如果是php5的话则可以放使用iconv,这是内建的模块。
     
    第二个参数是设定系统预定的文字编码方式,如果要用中文的话就改成 utf-8。
     
    第三个参数是设定该如何处理sql query result,也就是recordset的文字编码,同样的要用中文请设定成 utf-8。
     
     
     
    4.php接口中全局变量的问题(连续2次问题都因此)
    amfphp在调用php接口时是把这个接口文件include到amfphp本身的类里,所以include的时候就会出现在函数里global声明的变量获取不到,需要改成在声明该全局变量时就声明该变量global
     
    详见http://cn2.php.net/manual/en/language.variables.scope.php#63500
     
    5.如果加载大数据失败的话,可以调整amfphp/gateway.php的line151,把20调的更大些
    比如$gateway->enableGzipCompression(200*1024);
     
    6.gateway类的service方法会输出自己的header,如果对应的services也输出header信息的话可能会在ie7下报错。(bug#1076)
     
    7、{"room":1, "table":1, "seat":1} 在amfphp/browser/里传递数组参数时,使用前面这种格式
     
    8、只能接收return值,不能接收echo print_r等的输出值
     
     

    AMFPHP 1.9新版问题修改

    1、Flash环境下访问方法失败,而自带调试SWF正常,修改amfphp\gateway.php如下内容:

            if(PRODUCTION_SERVER)
            {
                    //Disable profiling, remote tracing, and service browser
                    $gateway->disableDebug();
                    // Keep the Flash/Flex IDE player from connecting to the gateway. Used for security to stop remote connections. 
                    //$gateway->disableStandalonePlayer();
            }

    2、访问ByteArray对象出错,修改amfphp\core\amf\io\AMFSerializer.php如下内容:

            function writeAmf3ByteArray($d)
            {
                    $this->writeByte(0x0C);
                    //$this->writeAmf3String($d, true);
                    $this->writeAmf3ByteArrayBody($d);
            }

    另需要在写PHP代码时,将AMFPHP的AMF设置为AMF3,Flash设置无效的,代码为$GLOBALS['amfphp']['encoding'] = 'amf3';
    或修改amfphp\core\shared\app\Globals.php内容中的$amfphp['encoding'] = "amf0";为$amfphp['encoding'] = "amf3";

  • 相关阅读:
    关于ArcGis for javascrept查询ArcGis server图层信息的方式
    Elasticsearch教程之基础概念
    C# 将日期转换成中文格式
    .Net 自定义Excel模板导出数据
    JavaScript判断浏览器类型
    简单的json传送数据
    Oracle替换临时表空间
    Python多线程循环
    crontab执行不生效-【问题篇】
    Python将MySQL表数据写入excel
  • 原文地址:https://www.cnblogs.com/keng333/p/2400327.html
Copyright © 2011-2022 走看看