WebClient.DownloadFile vs. WebClient.DownloadData
Ich bin mit WebClient.DownloadFile
eine kleine ausführbare Datei herunterladen Datei aus dem internet. Diese Methode funktioniert sehr gut. Allerdings würde ich jetzt gerne downloaden Sie diese ausführbare Datei in ein byte-array anstatt auf meiner Festplatte. Ich habe einige Bücher zu Lesen und kam über die WebClient.DownloadData
Methode. Das problem, dass ich mit der downloadData-Methode ist, dass anstatt Sie mein Datei, mein code ist der Download der HTML-Daten hinter meiner Datei download-Seite.
Habe ich versucht, mit Dutzenden von Websites - jeder bringt mir das gleiche Problem. Unten ist der code, den ich verwende.
//Create a new instance of the System.Net 'WebClient'
System.Net.WebClient client = new System.Net.WebClient();
//Download URL
Uri uri = new Uri("http://www35.multiupload.com:81/files/4D7B4D2BFC3F1A9F765A433BA32ED2C5883D0CE133154A0FDB7E7786547A3165DA62393141C4AF8FF36C75222566CF3EB64AF6FBCFC02099BB209C891529CF7B90C83D9C63D39D989CBB8ECE6DE2B83B/Project1.exe");
byte[] dbytes = client.DownloadData(uri);
MessageBox.Show(dbytes.Length.ToString()); //Not the size of my file
Beachten Sie, dass ich bin versucht, die Daten herunterladen einer ausführbaren Datei in ein byte-array.
Danke für jede Hilfe,
Evan
- Was sehen Sie in den Fiddler?
- Tut mir Leid aber was ist Fiddler?
- fiddler2.com/fiddler2 Es zeigt Ihnen die tatsächliche HTTP-Anfrage und Antwort
- hier sind meine Fiddler protokolliert, nach dem Versuch den download der Datei: # Ergebnis-Protokoll Host-URL für Körper-Caching Content-Type Verarbeiten, Kommentare, Benutzerdefinierte 1 302 HTTP www35.multiupload.com:81 /files/4D7B4D2BFC3F1A9F765A433BA32ED2C5883D0CE133154A0FDB7E7786547A3165DA62393141C4AF8FF36C75222566CF3EB64AF6FBCFC02099BB209C891529CF7B90C83D9C63D39D989CBB8ECE6DE2B83B/Project1.exe 0 text/html windowsformsapplication2.vshost:9648 2 200 HTTP www.multiupload.com /39QMACX7XS 37,505 no-store, no-cache, must-revalidate Expires: Sun, 10 Jul 2011 04:07:53 GMT " text/html windowsformsapplication2.vshost:9648
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen, eine Datei herunterladen, die mit einem abgelaufenen token-url. Siehe unten:
URL: http://www35.multiupload.com:81/files/4D7B4D2BFC3F1A9F765A433BA32ED2C5883D0CE133154A0FDB7E7786547A3165DA62393141C4AF8FF36C75222566CF3EB64AF6FBCFC02099BB209C891529CF7B90C83D9C63D39D989CBB8ECE6DE2B83B/Project1.exe`
Server:
www35
Token:
4D7B4D2BFC3F1A9F765A433BA32ED2C5883D0CE133154A0FDB7E7786547A3165DA62393141C4AF8FF36C75222566CF3EB64AF6FBCFC02099BB209C891529CF7B90C83D9C63D39D989CBB8ECE6DE2B83B
Kann man nicht einfach eine Datei herunterladen, die durch das warten auf den timer, um zu beenden, und kopieren Sie den direkten link, ist es ein "token" - link. Es funktioniert nur für einen bestimmten Zeitraum umleiten, bevor Sie zurück auf die download-Seite (das ist, warum Sie immer HTML statt binärer Daten).
Abhilfe
Haben Sie zum download der multiupload HTML und Parsen der direkte download-link aus dem HTML-Quellcode. Nur dieser Weg bietet ein Sicheres Feuer Weg, um eine up-to-date token-url.
Wie @Dark Slipstream sagte, Sie versuchen, eine Datei herunterzuladen, mit einem abgelaufenen token url
schauen Sie, wie die neue url:
Ich nicht Parsen der exceptions