2009-09-29 52 views
3

在Flex 3應用程序我用的HTTPService類發出請求到服務器:軟硬度:HTTP請求錯誤#2032

var http:HTTPService = new HTTPService(); 
http.method = 'POST'; 
http.url = hostUrl; 
http.resultFormat = 'e4x'; 
http.addEventListener(ResultEvent.RESULT, ...); 
http.addEventListener(FaultEvent.FAULT, ...); 
http.send(params); 

應用程序有彗星的架構。所以它會產生長時間運行的請求在等待這個請求的響應時,其他請求可以同時進行。

該應用程序在大多數情況下工作。但有時有些客戶得到HTTP請求錯誤執行長時間運行的要求:

faultCode:Server.Error.Request 
faultString:'HTTP request error' 
faultDetail:'Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"]. URL: http://example.com/ws' 

我認爲這取決於用戶的瀏覽器。

任何想法?

回答

1

我在HttpRequest中發送更長的(3-4K!)參數時遇到同樣的問題。只要我發送較小的它的工作(沒有刷新,重新加載或任何東西)。我不知道在你可以發送的參數長度上是否有客戶端或Web服務器端的限制,但肯定會導致問題。
url limitations may cause it

1

此錯誤顯得很一般,我會建議試圖收集更多的信息,分享其關於這一問題。

  • This post看起來與您的情況類似。
  • This post可能會幫助您找到更多有助於調試的信息。
  • 哪些客戶受到影響?
  • 您可以捕獲http狀態碼或使用Charles,Wireshark或類似軟件發送的流量嗎?
1

嘗試監聽請求的HTTP狀態,使用flash.events.HTTPStatusEvent.HTTP_STATUS
這可能給你什麼地方出了錯一些更多的信息。

+0

也儘量flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS是你在空中 – 2013-08-28 10:54:51

1

我要打開另一個問題上基本上是相同的話題,但我圖二懸而未決的問題是有過之而無不及1

我從我們有一個Flex應用程序的一些用戶中獲得了類似的間歇性問題,但與一些稍微不同的症狀。我可以提供的全部信息是:

  1. 它也發生在短(10ms)的請求中。
  2. 它似乎隨機發生。
  3. 連接通過SSL。
  4. 它只發生在IE的用戶,而不是用戶使用FireFox。
  5. 一旦發生,用戶告訴我他們需要關閉IE並重新啓動它(有些用戶說他們需要重新啓動,但我認爲這不僅僅是一次IE重新啓動)。似乎需要幾分鐘才能重置自身。
  6. 它似乎不會影響用戶的其他網絡連接 - 它們可以繼續使用其他IE窗口。
  7. 一旦發生,看起來沒有Flex應用程序的HTTPService請求會起作用。
  8. 它發生(顯然)只有一小部分用戶。最初它似乎是由於它們與主服務器的物理距離所致,但這不再是 似乎必然是這種情況(儘管它可能是連接質量)。
  9. 我不清楚用戶正在運行的Adobe Flash版本。 代碼是用Adobe Flex 3.4(linux)構建的
  10. 該應用程序執行的請求範圍非常廣泛,但很多都是並行的,儘管我沒有能夠重現該問題。
  11. 用戶確實在數分鐘後回到應用程序後發生此錯誤。
  12. 服務器日誌中似乎沒有相關的服務器端請求條目,表明請求永遠不會到達服務器(可能永遠不會離開客戶端)。
  13. 服務器響應所有具有相關緩存標頭的請求,以關閉IE緩存。

目前的解決方法我們是要求用戶運行在Firefox中的應用。

錯誤的完全轉儲是:

HTTP Status Code: null 
Fault Code: Server.Error.Request 
Fault Error ID: null 
Fault Detail: Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"]. URL: https://my.server/url 
Fault String: HTTP request error 
Fault Name: Error 
Fault Message: faultCode:Server.Error.Request faultString:'HTTP request error' faultDetail:'Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"]. URL: https://my.server/url' 
Root Cause: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"] 

很多人都提到的錯誤2032,有些甚至只提及IE下間歇性錯誤,但目前還沒有解決方案的提及。如果我找到一個,我會在這裏更新我的帖子。

更新

說給用戶,因爲這發生後,我們發現:

  1. 用戶可以在IE中打開一個新標籤,並加載相同的Flex應用程序了罰款 - 所以沒有互聯網連接問題。
  2. 用戶可以在發生錯誤的Flex應用程序的選項卡中加載google.com - 因此似乎沒有與該特定選項卡相關的連接問題。
  3. 用戶可以將帶有損壞應用程序的選項卡中的地址複製到另一個選項卡中,並且Flex應用程序將加載。
  4. 用戶可以在flex應用中斷的標籤中加載google.com後,再次複製flex應用的URL,並立即得到問題。

看來,我的具體應用,我的Flex應用程序管理,以打破Flash插件/ VM到休息後,在URL沒有進一步的請求被允許的程度。

我完全被這個難倒了,我建議用戶使用FireFox,或者將應用程序包裝在Air包中。

0

我已經有這個確切的問題發生在我的空氣應用程序。我最終意識到我不小心將urlrequest.idleTimeout設置爲10.這個超時實際上是以毫秒爲單位,而我的web服務器是本地的,所以如果我沒有發送任何參數(不是get或post)到我的本地服務器,它將工作。每當我發送任何參數以及請求時,它都會失敗,因爲我的腳本花費了超過10ms的時間來運行並返回數據。

您可能需要注意緩慢加載腳本。你可以通過強制一些靜態輸出來進行調試,然後停止進一步執行該頁面。我在我的php頁面中輸入:

<?php 
echo "hello=hi"; 
die(); 
?> 

此外,請確保在沙箱限制內進行調試。我正在使用自簽名SSL證書,並且在嘗試連接到本地測試Web服務器時出現很多警告。

希望有幫助!

1

我在這裏有一些相同的問題,但有一個Flash(Web-Flex 4.1 SDK)應用程序。 在嘗試了我們縮小的大量解決方案後,我們終於找到了一款能夠在所有系統(包括新安裝的機器)中都可靠運行的解決方案。

A。在Flex的預初始化階段,在應用程序的根目錄(或階段)添加全局事件偵聽器。

IOErrorEvent.IO_ERROR 
IOErrorEvent.NETWORK_ERROR 
HTTPStatusEvent.HTTP_STATUS 
ErrorEvent.ERROR 
SecurityErrorEvent.SECURITY_ERROR 

如果錯誤被毫無遺漏 - event.preventDefault();

。添加事件偵聽器上的應用程序用於以下錯誤每裝載機:

IOErrorEvent.IO_ERROR 
SecurityErrorEvent.SECURITY_ERROR 
HTTPStatusEvent.HTTP_STATUS 

*嘗試恢復,如回落到外部接口調用...

Ç。將bin-release文件夾中的所有SWZ文件與SWF文件一起放在您用於傳遞應用程序的服務器上的相同路徑中。 在我的情況下,這些都是需要的文件:

sparkskins_4.5.1.21328.swz 
spark_4.5.1.21328.swz 
textLayout_2.0.0.232.swz 
rpc_4.5.1.21328.swz 
osmf_1.0.0.16316.swz 
framework_4.5.1.21328.swz 

*發現這一點,我使用Chrome開發者控制檯看到的網頁上出現錯誤時,發現404的鏈條,當應用程序試圖下載這些文件。

D。有一個正確配置的crossdomain.xml策略文件,其中包含允許http請求xml標記。

<allow-http-request-headers-from domain="*" headers="*"/> 

根據您的具體情況需要替換*。

乾杯