2009-08-26 33 views
9

我想知道是否有辦法知道服務器是否支持恢復下載功能,如果支持,我該如何發送恢復請求?HttpWebRequest或WebRequest - 簡歷下載ASP.NET

我一直在尋找一個解決方案,我的ASP.NET頁面可以從服務器做一個下載到礦井,像「rapidleech」今天沒有,但我想,以檢查是否在那裏我請求服務器下載支持恢復功能。

回答

24

恢復文件是通過使用Range HTTP標頭指定要下載的文件的字節範圍完成的。這可以在.NET中使用HttpWebRequest.AddRange函數完成。

例如:

request.AddRange(1000); 

將告訴服務器開始在文件的第1000個字節的發送。

如果服務器支持Range標頭,它將發送HTTP狀態爲206(部分內容)而不是普通的200(OK)的內容。請參閱HTTP Spec

要在嘗試下載前檢查服務器是否支持恢復,請更改HttpWebRequestMethod「HEAD」。如果支持恢復,服務器將返回206(部分內容),如果不支持則返回200(OK)。

+0

的範圍具體要求的更多信息時,如果服務器犯規詢問服務,將它發送一個正常的200? – Cleiton 2009-08-26 17:35:13

+0

是的。根據HTTP規範,如果服務器不支持範圍,服務器將發送包含所有內容的標準200。 您還可以檢查在初始下載的「Accept-Ranges」標題中指定的服務器嘗試查看它是否支持發送範圍(應該是「bytes」或「none」)。此標頭不是必需的,所以如果沒有「Accept-Ranges」標頭,它可以接受範圍。 – 2009-08-26 17:54:00

+0

@亞當,非常感謝! – Cleiton 2009-08-26 18:00:34