2016-12-16 3 views
0

Ich versuche, eine PDF von einer URL mit einer Windows-Konsolenanwendung herunterzuladen. Ich verwende den folgenden Code:C# -Konsole Webclient gibt keine Daten zurück, aber der Browser tut

using (var webClient = new System.Net.WebClient()) 
{ 
     webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");  
       byte[] data = webClient.DownloadData(url);  
       System.IO.File.WriteAllBytes(@"D:\Files\hello.pdf", data); 
} 

Wenn ich in dem obigen Code im Browser/Postbote die gleiche URL kopieren und einfügen, ich die Datei aber bekommen, wenn ich das gleiche in der C# Konsolenanwendung versuchen, ich Holen Sie sich eine andere HTML-Antwort. Ich habe die Anfrage/Antwort mit Fiddler abgefangen und der einzige Unterschied, den ich sehen konnte, ist, dass wenn die Anfrage über Browser/Postman ausgelöst wird, einige zusätzliche Cookies zur Anfrage hinzugefügt werden, die spezifisch für die Anwendung sind, an der wir gerade arbeiten. Ich bin verwirrt darüber, wie der Browser/Postbote Cookies für die Anwendung hinzufügen kann.

Ich versuchte, alle Cookies zu löschen und versuchte es erneut aus dem Browser, aber Fiddler zeigt die Cookies in der Anfrage. Irgendwelche Hinweise, was vor sich geht?

+0

Was ist die URL? –

+0

Häufig werden Cookies für die Authentifizierung verwendet ... Es liegt an Ihnen, Hacks zu entwickeln, um sie entweder zu erhalten (zB durch Anfordern der ersten Seite/fälschen Anmeldung) oder von Browser stehlen ... Im Allgemeinen Websites werden nicht getestet um richtig zu arbeiten, wenn jemand versucht, sie zu kratzen, und oft explizit eingerichtet, um ein solches Verhalten zu verhindern, indem Cookies/Referrer/versteckte automatisch generierte Felder und dergleichen überprüft werden. –

Antwort

-1

Überprüfung dieser Code

var request = WebRequest.Create(url); 
request.Headers[HttpRequestHeader.UserAgent] = @"Mozilla/5.0(Windows NT 6.3; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"; 

var httpResponse = (HttpWebResponse)request.GetResponse(); 
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
{ 
    // write 
} 
-1

Warum Sie diese Bytes brauchen? Herunterladen und speichern mit einer Zeile:

using (var client = new WebClient()) 
{ 
    client.DownloadFile("http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf", "C:\\book.pdf"); 
} 
+0

versuchte das, aber es gibt das gleiche Ergebnis wie von diesen Bytes – Thomas

+0

Was ist die URL? Überprüfen Sie bitte die aktualisierte Antwort –

+0

, wie Sie sehen können, wenn eine Datei heruntergeladen wird. Wenn dies nicht der Fall ist, geben Sie zusätzliche Details wie Ihre URL an. http://stackoverflow.com/help/mcve –

Verwandte Themen