我正在尝试使用ZendAMF从Flash远程方法调用MySQL数据库,并且我不断收到NetConnection.Call.BadVersion错误。
我的服务器工作正常。 Apache 2.2.14
我的PHP工作正常。 PHP 5.2.11
我的数据库正在运行。 MySQL 5.0
更新:我的第一个问题是Flash中的安全错误。如果您尝试从Flash IDE将本地SWF运行到Web服务,则会收到安全警告,该警告将引发BadVersion错误。但是,如果你'TEST MOVIE',安全错误就不会出现,所以我花了一段时间才意识到这一点。我改变了测试过程以删除此变量。我现在能够使用AMFPHP成功实现我的php类代码,这实际上排除了我的类作为问题(我认为)。这似乎是AMF的Zend实现的一个问题。
我在这里遵循了Lee Brimlow的教程:http://www.gotoandlearn.com/play.php?id=90。我无法让它在本地工作,我已将我的内容移到Web服务器上,可以从我的SWF调用Class和Method。我用Charles查看了回复。当我在Charles中验证响应时,我得到了这个:
Validator: Failed to Parse XML Document.
Reason: An invalid XML character (Unicode: 0x0) was found in the CDATA section.
Line: 65 Column: 87
任何想法如何解决这个问题?可以用PHP处理吗?
这是我的ZendAMF代码:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set("display_errors", "on");
ini_set("include_path", "./frameworks");
require_once 'Zend/Amf/Server.php';
require_once 'Animal.php';
$server = new Zend_Amf_Server();
$server->setClass("Animal");
$server->setProduction(false);
$response = $server->handle();
echo $response;
?>
这是我的PHP类代码:(注意没有结束?&gt;标记。)
<?php
class Animal
{
public function __construct()
{
include "dbinfo.inc.php";
$linkID = mysql_connect('localhost', $username, $password) or die("Could not connect to host.");
mysql_select_db($database, $linkID) or die( "Unable to select database.");
}
public function getAnimalQuotes()
{
$result = mysql_query("SELECT * FROM AnimalQuotes");
$t = array();
while($row = mysql_fetch_assoc($result))
{
array_push($t, $row);
}
return $t;
}
}
我已将我的Flash Player更新为10.1。 我正在将我的swf发布到Flash 10 / AS3。
当我运行SWF时,我仍然收到此错误。
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.BadVersion
at ZendAMF_fla::MainTimeline/frame1()
这是我的AS3代码:
import flash.net.*;
var nc:NetConnection = new NetConnection();
nc.connect("http://www.pbjs.com/2010/");
var res:Responder = new Responder(onResult, onFault);
nc.call("Animal.getAnimalQuotes", res);
function onResult(e:Object):void
{
trace (e);
}
function onFault(e:Object):void
{
for (var i in e){
trace(e[i]);
}
}
答案 0 :(得分:1)
连接是否可以在独立播放器中运行?检查客户端的日志并查看引发的错误。 IDE以不同的方式连接到独立的,可能会引发安全性错误。
答案 1 :(得分:1)
你检查过你的PHP代码吗?如果您的PHP代码有错误,NetConnection.Call.BadVersion错误是一个典型的错误。在调试Flash端之前,请100%确定您的PHP代码是否正常工作并返回您期望的结果。
答案 2 :(得分:1)
你准备好了吗?!在打开PHP标记或AMF响应无效之前,Zend Framework网关文件不能有任何空格。
我唯一的问题是第1行没有任何内容,第2行也没有开放的PHP标记。
这就是问题所在。下面的工作代码!
<?php // MAKE SURE THIS IS LINE 1
// Configurable values
// Debugging values
$debug = true; // Debugging status
if ($debug)
{
// Report all errors, warnings, interoperability and compatibility
error_reporting( E_ALL | E_STRICT );
// Show errors with output
ini_set( "display_errors" , "on");
}
else
{
error_reporting(0);
ini_set("display_errors", "off");
}
// Add the Zend AMF installation folder to PHP include path
ini_set( "include_path", "./frameworks/library");
// Instantiate the Zend Amf server
require_once( "Zend/Amf/Server.php" );
require_once("Animal.php");
$server = new Zend_Amf_Server();
$server->setClass("Animal");
// Return the handle.
$response = $server->handle();
echo $response;
?>