Чтение сообщений об ошибках сервера для URLLoader - PullRequest
4 голосов
/ 10 июня 2010

У меня есть загрузчик 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 неверных запросов с сообщениемобъясните ошибку.Если Event.COMPLETE, я могу увидеть какое-то сообщение (ответ) обратно с сервера в поле «data» события, но если вызывается onGetUploadURLError или getHttpStatus, он просто говорит, что код ошибки равен 400, но не показываетмне сообщение, связанное с ним.

Поле «data» не определено в getHttpStatus и «» в onGetUploadURLError.Напротив, в getBaseURL я получаю: {"ResponseMetadata": {...}} Я проверил и получаю похожий ответ в своем браузере на неправильный запрос, но не вижу его.

Любая идея, как я могу получить сообщение?

Большое спасибо, Руди

1 Ответ

5 голосов
/ 10 июня 2010

Flash не очень хорошо обрабатывает коды состояния HTTP. Вот пост в блоге с комментариями сотрудника Adobe, который говорит, что проблема заключается в ограничениях плагина. Сотрудник Adobe указывает на библиотеку для выполнения HTTP-запросов с использованием AS3 через сокеты , но я сомневаюсь, что это будет очень эффективно (по сравнению с передачей запросов на вставку в браузер).

Стандартная практика для всех проектов, над которыми я когда-либо работал, состояла в том, чтобы всегда отправлять 200 OK и добавлять error ключ к сообщению.

edit: также см. эту ошибку , которая является именно вашей проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...