Ich versuche, eine .torrent-Datei (nicht den Inhalt des Torrents selbst) in meiner .NET-Anwendung herunterzuladen.Das Herunterladen einer Torrent-Datei mit WebClient führt zu einer beschädigten Datei.
Mit dem folgenden Code funktioniert für andere Dateien, aber nicht .torrent. Die resultierenden Dateien sind ungefähr 1-3kb kleiner als wenn ich die Datei über einen Browser herunterlade. Beim Öffnen in einem Torrent-Client heißt es, der Torrent sei beschädigt.
WebClient web = new WebClient();
web.Headers.Add("Content-Type", "application/x-bittorrent");
web.DownloadFile("http://kat.ph/torrents/linux-mint-12-gnome-mate-dvd-64-bit-t6008958/", "test.torrent");
Durch Öffnen der URL in einem Browser wird die Datei ordnungsgemäß heruntergeladen.
Irgendwelche Ideen, warum das passieren würde? Gibt es eine gute Alternative zum WebClient, um die Datei korrekt herunterzuladen?
EDIT: Ich habe schon versucht, diese sowie WebClient, und es ergibt sich die gleiche Sache:
private void DownloadFile(string url, string file)
{
byte[] result;
byte[] buffer = new byte[4096];
WebRequest wr = WebRequest.Create(url);
wr.ContentType = "application/x-bittorrent";
using (WebResponse response = wr.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (MemoryStream memoryStream = new MemoryStream())
{
int count = 0;
do
{
count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
} while (count != 0);
result = memoryStream.ToArray();
using (BinaryWriter writer = new BinaryWriter(new FileStream(file, FileMode.Create)))
{
writer.Write(result);
}
}
}
}
}
HttpWebRequest gibt Ihnen mehr Kontrolle über Ihre Downloads ... Ich bin nicht sicher, welche Möglichkeiten Sie allerdings für einen reißenden Strom konfigurieren müssen. – McGarnagle
Danke! Ich hatte das auch tatsächlich versucht, ohne Unterschied in den Ergebnissen. Ich habe diesen Code bearbeitet. Wenn Sie etwas sehen, was ich falsch gemacht habe, lassen Sie es mich wissen. – Khalos
Sollte beim Herunterladen einer .torrent-Datei kein Unterschied sein, als beim Herunterladen einer anderen Binärdatei. –