AS3 ioError только на некоторых браузерах, почему это так? - PullRequest
2 голосов
/ 08 февраля 2012

Я делаю флеш, который вызывает google translate Служба преобразования текста в речь через URL:

translate.google.com/translate_tts?tl=en&q=example

Я получил его для работы в Firefox, но по какой-то причине он НЕ работает в Chrome исафари.В чем может быть проблема?

ошибка, которую я получаю:

[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://translate.google.com/translate_tts?tl=en&q=example"]

, но когда я копирую / вставляю URL в браузер, он возвращает файл так, как должен.

Флеш-плееры:

firefox: 10,0,42,34 installed - WORKS
chrome: 11,1,102,55 installed - DOES NOT WORK
safari: 10,0,42,34 installed - DOES NOT WORK

Я полностью ошеломлен.Не знаю, как отлаживать дальше.

Пожалуйста, помогите


ОБНОВЛЕНИЕ 1: ФЛЭШ-КОД

    public function say(text:String, language:String):void {
        var urlString:String = createGoogleTTSUrl(text, language);
        var url:URLRequest = new URLRequest(urlString);
        //var context:SoundLoaderContext = new SoundLoaderContext(1000, true);
        _sound = new Sound();
        _sound.addEventListener(Event.COMPLETE, loadComplete);
        _sound.addEventListener(ErrorEvent.ERROR, err);
        _sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler2);
        _soundChannel = new SoundChannel();
        _sound.load(url); //, context);
    }
 private function ioErrorHandler2(event:IOErrorEvent):void {
        trace(event);
 }

Я только позже удалил SoundLoaderContext, но это ничего не изменило.


ОБНОВЛЕНИЕ 2: Другие люди с такой же проблемой:

В этом учебнике есть та же проблема.Работает в FF, но не в Chrome или Safari.Люди в комментариях сообщают о похожих ошибках (нажмите кнопку демонстрации :) http://active.tutsplus.com/freebies/exclusive/exclusive-freebie-text-to-speech-utility/

1 Ответ

2 голосов
/ 08 февраля 2012

Очевидная причина ошибки # 2032 при обнаружении фактического запроса и ответа заключается в том, что Google отвечает 404 при вызове из Flash в Chrome или IE (не тестировал Safari или Opera).Но почему возвращает 404?

Не решение, а некоторое устранение неполадок - чем Firefox отличается от других с точки зрения запроса?Далее ChD = "Chrome напрямую вызывает API без Flash (что работает)"

Примите

FF: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Ch: Accept: */*

IE: Accept: */*

ChD: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Это может быть так, но кажется маловероятным.Два из них работают больше, чем просто подстановочный заголовок Accept.

User-Agent

Очевидно, что каждый браузер отправляет вместе с различными User-Agent.За исключением того, что ChD отправляет так же, как Ch - и первый работает, так что это не так.

Referer

Firefox не отправляет Referer вместе.Другие отправляют:

Referer: http://activetuts.s3.amazonaws.com/freebies/006_textToSpeech/tutorial/text2speech.swf

ChD, очевидно, тоже не отправляет Referer, так как я набрал адрес вручную.Таким образом, может возникнуть проблема с заголовком Referer.

Учитывая, что TTS не является общедоступным API, а является частной конечной точкой (для собственной службы перевода Google), то есть конечной точкой, которую вы на самом деле не имеете праваиспользовать, это не было бы удивительно.

Другое

Кроме этого, и некоторые сведения о принятии языка (+ содержимое файлов cookie - отправляется тот же набор файлов cookie -и на моей машине это на самом деле их собственных файлов cookie за один раз - у Flash была проблема, когда она отправляла файлы cookie из IE в плагине Firefox) ... Кроме этого, запросы идентичны, но толькоFirefox не дает 404.

Версии FlashPlayer

FF: 11.0.1.152 Debug

Ch: 11.1.102.55

IE: 11.0.1.152 Debug

Обновление: IE также отправляет версию Flash вместе: x-flash-version: 11,0,1,152 - но ни один из других браузеров не делает, так что не поэтомут работа.

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