读取URLLoader的服务器错误消息

时间:2010-06-09 20:55:30

标签: actionscript-3 urlloader ioerror

我有一个带有以下代码的URL加载器:

public function getUploadURL():void {   
    var request:URLRequest = new URLRequest();

    var url:String = getPath();
    // Adds time to prevent caching
    url += "&time=" + new Date().getTime(); 

    request.url = url;
    request.method = URLRequestMethod.GET;

    _loader = new URLLoader();
    _loader.dataFormat = URLLoaderDataFormat.TEXT;
    _loader.addEventListener(Event.COMPLETE, getBaseURL);
    _loader.addEventListener(IOErrorEvent.IO_ERROR, onGetUploadURLError);
    _loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, getHttpStatus);

    _loader.load(request);
}

我的问题是这个请求可能是错误的,因此服务器会给我一个400 Bad Request,并附带一条消息来解释错误。如果是Event.COMPLETE,我可以在Event的“data”字段中看到服务器返回的一些消息(响应),但是如果调用了onGetUploadURLError或getHttpStatus,它只是说错误代码是400但是没有显示我与之相关的信息。

“data”字段在getHttpStatus中未定义,而在onGetUploadURLError中为“”。 相反,在getBaseURL中,我得到:{“ResponseMetadata”:{...}} 我检查过,我在浏览器中得到了类似的错误请求,但我看不到它。

我知道如何才能得到消息?

非常感谢, 鲁迪

1 个答案:

答案 0 :(得分:5)

Flash无法很好地处理HTTP状态代码。这是一个blog post,其中有来自Adobe员工的评论说这个问题实际上是插件限制。 Adobe员工指向一个库来执行HTTP requests using AS3 through sockets,但我怀疑它会非常高效(与将插件手动请求关闭到浏览器相比)。

我曾经参与的所有项目的标准做法是始终发送200 OK并在消息上添加error密钥。

修改:另请参阅this bug,这正是您的问题。