2012-02-08 71 views
2

我正在調用谷歌通過網址翻譯文本到語音服務閃光燈:僅在某些瀏覽器上使用AS3 ioError,爲什麼?

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

我得到它的工作在Firefox,但由於某種原因它不能在Chrome和Safari工作。問題在哪裏?

我得到的錯誤是:

[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,它返回一個FIL就像它應該。

Flash播放器:

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:FLASH CODE

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/

+0

你可以發佈Flash代碼嗎? – vulkanino 2012-02-08 16:23:21

+0

看到這個鏈接:[http://stackoverflow.com/questions/3178252/chrome-as3-urlloader-different-behavior-on-network-error] [1] 和這一個:[http:// stackoverflow.com/questions/7355595/as3-error-says-stream-error-but-when-loaded-manually-its-there][2] [1]:http://stackoverflow.com/questions/3178252/chrome-as3-urlloader-網絡錯誤行爲 [2]:http://stackoverflow.com/questions/7355595/as3-error-says-stream-error-but-當手動加載時,它的 – mgraph 2012-02-08 16:24:53

+0

這些鏈接沒有幫助。第一個解釋爲什麼鉻在URL中丟失,第二個進入一些「閃存認證」,我不認爲適用於這裏 – mgPePe 2012-02-08 16:38:57

回答

2

顯而易見的原因#2032錯誤,嗅着實際的請求和響應時,其是谷歌與404響應從Flash調用時Chrome或IE(尚未測試Safari或Opera)。但爲什麼它返回404?

不是一個解決方案,但有一些故障排除 - Firefox在請求方面與其他方法有什麼區別?在下文中,CHD = 「鉻直接調用,沒有閃光燈(工作)的API」

接受

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

章:Accept: */*

IE:Accept: */*

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

可能是這樣,但似乎不太可能。這兩項工作發送的不僅僅是一個通配符Accept標題。

用戶代理

顯然每個瀏覽器沿不同用戶代理髮送。除了ChD與Ch一樣發送 - 前者的作品,不是這樣。

Referer的

火狐將沿着沒有參考。其他人發送:

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

ChD顯然也沒有發送Referer,因爲我手動輸入了地址。所以Referer標題可能是問題。

考慮到TTS不是一個公共API,而是一個私有終端(對於Google自己的翻譯服務),即您真的不被允許使用的終端,這並不奇怪。

其他

除此之外,還有一些語言驗收細節(+ cookie內容 - 同一組的cookie被髮送 - 和我的機器上,它實際上是他們自己餅乾一次 - 閃存使用在Firefox插件中從IE發送cookies的問題)......除此之外,請求是相同的,但只有Firefox不會在我的機器上產生404。

flash播放器版本

FF:11.0.1.152 Debug

章:11.1.102.55

IE:11.0.1.152 Debug

更新: IE也將Flash版本一起:x-flash-version: 11,0,1,152 - 但沒有其他瀏覽器都這麼做,所以這不是他們不這樣做的原因工作。

相關問題