2016-12-16 5 views
0

Windowsコンソールアプリケーションを使用してURLからPDFをダウンロードしようとしています。私は以下のコードを使用しています:C#コンソールWebclientはデータを返しませんがブラウザは

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); 
} 

私はコピーして、私はC#のコンソールアプリケーションで同じしようとすると、ブラウザ/郵便配達中に上記のコードで同じURLを貼り付け、私は、しかし、ファイルを取得する場合、I他のHTML応答を取得します。私はFiddlerを使用してリクエスト/レスポンスを傍受しましたが、私が見ることのできる唯一の違いは、リクエストがブラウザ/ postmanで発生したときに、私たちが作業しているアプリケーションに固有のリクエストに余分なクッキーが追加されていることです。ブラウザ/郵便配達員がどのようにアプリケーション固有のCookieを追加できるのか混乱しています。

すべてのCookieを消去してブラウザから再度試してみましたが、Fiddlerは要求にCookieを表示しています。何が起こっているかに関する手がかりは?

+0

どのようなURLですか? –

+0

頻繁にクッキーが何らかの認証に使用されている...あなたがそれらを入手するために(つまり、最初にページをリクエストするか、ログインを偽って)、ブラウザから盗むことは、クッキー/リファラー/隠れた自動生成フィールドなどをチェックすることによってそのような動作を抑止するように明示的に設定することができます。 –

答えて

-1

チェック

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

は、なぜあなたはそれらのバイトが必要なのです。このコードは? 1行でダウンロードして保存する:

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

これを試しましたが、それらのバイトと同じ結果が得られます – Thomas

+0

URLは何ですか?更新された回答 –

+0

を確認してください。samleがファイルをダウンロードするのを見てください。これが当てはまらない場合は、URLのような追加の詳細を指定してください。 http://stackoverflow.com/help/mcve –

関連する問題