2009-03-03 50 views
0

我正在研究一個應用程序,它會產生大量HTTP「Web服務」請求,其中一些可能是相當大的XML文件。現在HTTP請求是在第二個線程上完成的,因此GUI /窗體沒有被鎖定。但是仍然無法向用戶反饋請求的進展情況。.net精簡框架中的HTTP進度

到目前爲止,我一直在使用HTTPWebRequest類進行這項工作,並且我的所有研究成果都沒有做到ASync進度報告回調,直到完成爲止。

在不久的將來,這個應用程序將不得不通過3G/GPRS上傳大的.jpg和.zip文件。如果沒有進度條或反饋類型,使用起來會非常不愉快。

是否有任何其他(可能是第三方)框架或我可以使用的類?

請不要發佈桌面.Net工作的代碼,並假設它對CF有效,謝謝。

回答

0

請記住,如果XML文件是使用HTTP「Transfer-Encoding:chunked」標頭髮送的,則HTTP不會告訴您該文件有多大。

+0

即使不知道最終的Content-Length ..也不希望給用戶一些關於進度的反饋。 – Alex 2009-03-10 07:33:31

0

您可以攔截來自服務器用這樣的代碼的字節流:

HttpWebResponse response = request.GetResponse(); 

Stream responseStream = response.GetResponseStream(); 

然後你就可以在自己的類從HTTP數據流並報告有多少字節具有讀取包裹的響應流通過一個事件收到。您必須啓動您自己的單獨線程才能運行,並且您必須將流的內容明確寫入文件。 (我在CF中沒有嘗試過這種方法,但是這些方法被記錄爲CF.)