Actionscript 3 错误#2044:未处理的ioError:。text=错误#2032:流错误。在AS3中
我在AS3中有一个函数,它经常调用PHP文件。大多数时候它都能工作,但偶尔会失败并抛出我在标题中使用的错误。我对此进行了相当广泛的研究,并开始以以下方式捕捉事件:Actionscript 3 错误#2044:未处理的ioError:。text=错误#2032:流错误。在AS3中,actionscript-3,error-handling,Actionscript 3,Error Handling,我在AS3中有一个函数,它经常调用PHP文件。大多数时候它都能工作,但偶尔会失败并抛出我在标题中使用的错误。我对此进行了相当广泛的研究,并开始以以下方式捕捉事件: public static function Bar():void { var request:URLRequest = new URLRequest("path/to/file.php"); var requestVariables:URLVariables = new URLVariables(); var
public static function Bar():void {
var request:URLRequest = new URLRequest("path/to/file.php");
var requestVariables:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
requestVariables.event = "foo";
request.method = URLRequestMethod.POST;
request.data = requestVariables;
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.load(request);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
loader.addEventListener(Event.COMPLETE, onIOComplete, false, 0, true);
}
private static function onIOComplete(e:Event):void
{
var loader:Loader = e.target as Loader;
if ( loader != null )
{
loader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.removeEventListener(Event.COMPLETE, onIOComplete);
}
Logger.log("LOADER COMPLETE");
}
private static function onIOError(e:IOErrorEvent):void
{
var loader:Loader = e.target as Loader;
if ( loader != null )
{
loader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.removeEventListener(Event.COMPLETE, onIOComplete);
}
Logger.log("ERROR: " + e.toString());
}
尽管有上述代码,我仍然偶尔看到流错误。还有什么我应该/可以做的吗
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLLoader;
import flash.net.URLRequestMethod;
import flash.net.URLLoaderDataFormat;
import flash.display.Loader;
function Bar():void {
var request:URLRequest = new URLRequest("http://127.0.0.1/test.php");
var requestVariables:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
requestVariables.event = "foo";
request.method = URLRequestMethod.POST;
request.data = requestVariables;
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.load(request);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
loader.addEventListener(Event.COMPLETE, onIOComplete, false, 0, true);
}
function onIOComplete(e:Event):void
{
var loader:Loader = e.target as Loader;
if ( loader != null )
{
loader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.removeEventListener(Event.COMPLETE, onIOComplete);
}
trace("LOADER COMPLETE");
}
function onIOError(e:IOErrorEvent):void
{
var loader:Loader = e.target as Loader;
if ( loader != null )
{
loader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.removeEventListener(Event.COMPLETE, onIOComplete);
}
trace("ERROR: " + e.toString());
}
Bar();
我只完成加载程序您是在本地主机上还是通过网络进行测试?如果您与托管php文件的计算机的网络连接断开,则可能会发生IOErrorEvent。显然,问题是我调用的php文件正在使用file\u get\u内容进行网络调用,而我本应使用cURL。一旦我更改了它们,第二次网络调用就停止失败,因此我不再看到错误。错误到底在哪里抛出?您可以在debug中运行它,并逐步执行。我想到的第一件事是使用try-catch块,但首先要知道是哪一行代码导致了错误?也许“http://url/to/file.php”会起作用……那么很可能是网络问题。您可以使用IOErrorEvent处理程序通过等待一小段时间并再次发送请求来处理间歇性网络连接。根据您正在做的事情,您可能希望跟踪重新加载的次数,以便在经过一定次数的尝试后,您可以放弃并提醒用户应用程序无法联系服务器。