[.NET]利用Fiddler來查看WebClient Download問題
今天同事問一個關於透過WebClient.DownloadFile的問題!
他透過IE輸入要download File的Url,可以正常下載檔案。
但是如果是透過程式呼叫WebClient.DownloadFile,卻不無法下載檔案! 程式如下,
//using System.Net;
using (WebClient wc = new WebClient())
{
string downloadFileUrl = @"http://downloadfileurl";
string saveFileName = @"h:\test1.xls";
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.DownloadFile(new Uri(downloadFileUrl), saveFileName);
}
結果下載下來的檔案內容如下,
<script>
alert("您的瀏覽器未送出Cookie。請確定Cookie的設定已打開!");
</script>
於是將Download的URL透過Fiddler來測試,卻是可以正常download下來的,如下,
透過Fiddler比較一下可正常下載與無法正常下載時發現,可正常下載的Header多了一個User-Agent: Fiddler。
於是在程式中多加入wc.Headers["User-Agent"] = "Mozilla/4.0";,就可以正常下載檔案下來了!
//using System.Net;
using (WebClient wc = new WebClient())
{
string downloadFileUrl = @"http://downloadfileurl";
string saveFileName = @"h:\test1.xls";
wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.Headers["User-Agent"] = "Mozilla/4.0";
wc.DownloadFile(new Uri(downloadFileUrl), saveFileName);
}
像這種要透過程式去模擬Browser下載檔案的話,如果發現程式運作上有什麼問題的話,可以透過Fiddler去比較2者的差異,然後再補足它。
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^