2011-06-15 83 views
3

每當我使用WebClient.DownloadFile()時,生成的文件長度總是0字節。我試過從不同網站上的文件,包括我自己的IIS本地文件,總是得到一個0字節的文件。在瀏覽器(Chrome)中點擊文件名時,文件會正確下載。DownloadFile創建0字節的文件

string fileName = @"us_ysera_tier11.json.gz"; 
string remoteUri = @"http://wowprogress.com/exports/ranks/" + fileName; 

if (!File.Exists(fileName)) 
{ 
    using (WebClient webClient = new WebClient()) 
    { 
     webClient.UseDefaultCredentials = true; 
     webClient.DownloadFile(remoteUri, fileName); 
    } 
} 

我是在做一些普遍錯誤的事,或者有人能指點我一個工作的例子嗎?

+0

查看您的代理。 – leppie 2011-06-15 14:41:40

+0

沒有使用代理。 – 2011-06-15 14:44:12

+0

如果您將文件名更改爲網站不喜歡的內容,並且您運行完全相同的代碼,則會下載145kb的html錯誤文件。所以代碼本身能夠下載這些信息。嘗試發送與chrome相同的http頭(可以通過運行Fiddler或等效工具來查看它們)。 – 2011-06-15 15:06:12

回答

5

此代碼在我的機器上下載5K文件。我更新了文件名和remoteUri值。

string fileName = "us_ysera_tier11.json.gz"; 
string remoteUri = "http://www.wowprogress.com/export/ranks/" + fileName; 
WebClient webClient = new WebClient(); 
webClient.Headers["Accept-Encoding"] = "application/x-gzip"; 
webClient.DownloadFile(remoteUri, fileName); 
+0

添加的標題也在我的工作上。 – 2011-06-15 16:13:29