这次使用php5.5.12+Amfphp2.2+Flash CS5.5,AS3代码如下:
var netCon:NetConnection = new NetConnection();
var rsp:Responder = new Responder(onSuccess,onError);
var phpUrl:String = "http://localhost/amfphp_2.2/Amfphp/index.php";
AMFTest();
function AMFTest()
{
netCon.objectEncoding = ObjectEncoding.AMF3;
netCon.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
netCon.connect(phpUrl);
netCon.call('HelloWorld.getData', rsp);
}
function onNetStatus(e:NetStatusEvent):void
{
trace(e.info.code);
trace("failed");
}
function onSuccess(rspObj:Object):void
{
trace("ok: "+rspObj);
}
function onError($rspObj:Object):void
{
trace("AMF client error.");
}
服务器上代码:
<?php class HelloWorld{public function getData() { return "Hello World";}}?>
显示错误为:
NetConnection.Call.BadVersion
网上关于这个问题的解释比较少,给出错误原因有php配置问题,需要对gataway文件中某段代码注释掉。但在amfphp2.2中是找不到那段代码。最后将HelloWorld.php代码中所有回车、空格和tab都删掉后,显示访问成功。但后来再次添加空格却依然显示成功,在网上查找后明白,php代码中的空格不能是全角空格。应该就是这个原因造成该错误。
其实引起这个错误提示的原因有多种,这或许只是原因之一。
其实主要原因是PHP代码的问题,需要仔细审查PHP代码的错误。