2009-08-26 16 views
9

Chciałbym wiedzieć, czy istnieje sposób, aby dowiedzieć się, czy serwer obsługuje funkcję pobierania CV i czy jest obsługiwana, w jaki sposób wysłać żądanie wznowienia?HttpWebRequest lub WebRequest - Wznów Pobierz ASP.NET

szukałem rozwiązania, gdzie moja strona ASP.NET może zrobić pobieranie z serwera do kopalni, coś jak „rapidleech” nie dzisiaj, ale chciałbym, aby sprawdzić, czy na serwerze, gdzie jestem wzywającego pobieranie obsługuje funkcjonalność wznowienia.

Odpowiedz

24

Wznawianie plików odbywa się przez określenie zakresu bajtów pliku, który chcesz pobrać, używając nagłówka HTTP Range. Można to zrobić w .NET przy pomocy funkcji HttpWebRequest.AddRange.

Na przykład:

request.AddRange(1000); 

powie serwer, aby rozpocząć wysyłanie w 1000. bajt pliku.

Jeśli serwer obsługuje nagłówek Zakres, wyśle ​​zawartość o statusie HTTP 206 (Częściowa zawartość) zamiast normalnego 200 (OK). Zobacz HTTP Spec.

Aby sprawdzić, czy serwer obsługuje wznawianie przed przystąpieniem do pobierania, zmień "GŁOWĘ" na HttpWebRequest "Method". Serwer zwróci 206 (Częściowa zawartość), jeśli obsługuje wznawianie, a 200 (OK), jeśli nie.

+0

więc, jeśli serwer nie robi support, to wyśle ​​normalnego 200? – Cleiton

+0

Tak. Zgodnie ze specyfikacją HTTP serwer wyśle ​​normalny 200 z całą zawartością, jeśli nie obsługuje zakresów. Możesz również sprawdzić, co serwer określony w nagłówku "Accept-Ranges" podczas początkowego pobierania spróbuje sprawdzić, czy obsługuje zakresy wysyłania (powinien być "bajtów" lub "brak"). Ten nagłówek nie jest wymagany, więc jeśli nie ma nagłówka "Accept-Ranges", może akceptować zakresy. –

+0

@Adam, wielkie dzięki! – Cleiton

Powiązane problemy