我有一个带有以下代码的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”:{...}} 我检查过,我在浏览器中得到了类似的错误请求,但我看不到它。
我知道如何才能得到消息?
非常感谢, 鲁迪
答案 0 :(得分:5)
Flash无法很好地处理HTTP状态代码。这是一个blog post,其中有来自Adobe员工的评论说这个问题实际上是插件限制。 Adobe员工指向一个库来执行HTTP requests using AS3 through sockets,但我怀疑它会非常高效(与将插件手动请求关闭到浏览器相比)。
我曾经参与的所有项目的标准做法是始终发送200 OK并在消息上添加error
密钥。
修改:另请参阅this bug,这正是您的问题。