4

我有一个带有以下代码的 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,我可以在事件的“数据”字段中看到从服务器返回的一些消息(响应),但是如果调用 onGetUploadURLError 或 getHttpStatus,它只是说错误代码是 400 但不显示我与它相关的消息。

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

知道我怎样才能得到消息吗?

非常感谢你,鲁迪

4

1 回答 1

5

Flash 不能很好地处理 HTTP 状态代码。这是一篇博客文章,其中包含 Adob​​e 员工的评论,称问题实际上是插件限制。Adobe 员工指向一个库,用于通过套接字使用 AS3 执行 HTTP 请求,但我怀疑这会非常高效(与将插件手动请求发送到浏览器相比)。

我从事过的所有项目的标准做法是始终发送 200 OK 并error在消息中添加密钥。

编辑:另请参阅此错误,这正是您的问题。

于 2010-06-10T00:00:08.740 回答