Dieser stream unterstützt keine seek-Operationen. HttpWebResponse
Mache ich ein Programm, das herunterladen von Dateien über http.
Ich habe es heruntergeladen, aber ich möchte in der Lage sein, um zu pausieren die downloads, das Programm schließen und fortsetzen Sie zu einem späteren Zeitpunkt erneut.
Ich wissen, wo ich bin, Sie herunterladen aus und unterstützt diese.
Bin ich den Download der Datei durch HttpWebResponse und Lesen die Antwort in ein Stream mit GetResponseStream.
Wenn ich die app schließen und neu starten, ich bin stecken, wie den download fortzusetzen. Ich habe versucht zu tun eine Suche auf dem stream, aber es Staaten, Ihre nicht unterstützt.
Was wäre der beste Weg, dies zu tun?
Beachten Sie, dass Sie sagen, die server neu zu starten - Sie können nicht einfach tun es selbst. Das ist der Grund für die
AddRange
Antwort unten.InformationsquelleAutor | 2009-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der server dies unterstützt, müssen Sie senden die Angebot Http-header mit Ihrer Anfrage über das AddRange Methode:
Dieser wird Sie anweisen, den server zu starten, das senden der Datei nach der 1. Kb. Dann Lesen Sie einfach die Antwort-stream als normal.
Um zu testen, ob ein server unterstützt das fortsetzen Sie können senden Sie eine
HEAD
anfordern und testen, ob es sendet dieAccept-Ranges: bytes
header.InformationsquelleAutor Darin Dimitrov
Wie wäre es mit einem HTTPRangeStream Klasse?
Ich weiß nicht, was "Wiederaufnahme" ist. HTTP 1.1 definiert ein Range-header, die diese Klasse setzt auf. wenn der server HTTP 1.1, dann macht er Bereich und kann kontaktiert werden, die von dieser Klasse.
durch
resuming
ich meinterange header
danke für die AufklärungInformationsquelleAutor Cheeso
Ihre Lösung ist gut, aber es funktioniert nur für die Fälle, in denen der server sendet den Content-Length-header. Dieser header nicht in dynamisch generierte Inhalte.
Auch für diese Lösung ist, senden Sie eine Anforderung für jeder Lesen. Wenn sich der Inhalt ändert, die auf dem server zwischen den Anfragen, dann erhalten Sie inkonsistente Ergebnisse.
Ich würde verbessert werden, durch speichern der Daten-lokal - entweder auf der Festplatte oder im Arbeitsspeicher. Dann können Sie versuchen, in alles, was Sie wollen. Es werden nicht jedes problem der Inkonsistenz, und Sie brauchen nur eines HttpWebRequest herunterladen.
InformationsquelleAutor feroze