2016-05-29 149 views
1

下载文件我知道如何通过网络客户端下载文件,但是事情是我从一个链接下载.rar文件和链接将被重定向到2〜3倍,我使用的WebClient和HttpWebRequest的从重定向链接

WebClient webClient = new WebClient(); 
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
webClient.DownloadFileAsync(new Uri("http://www.example.com"), "setup.rar"); 

Web客户端可以下载文件,但损坏和

我已经使用的HttpWebRequest 它可以得到重定向的链接,但不会下载文件

回答

0

WebClient类是不是浏览器。如果它看到一个3xx请求,它不会自动回应它。由呼叫者决定接下来要做什么。

您可以尝试编写自定义WebClient类以启用自动重定向。

public class WebClientEx : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     var request = (HttpWebRequest)base.GetWebRequest(address); 
     request.AllowAutoRedirect = false; 
     return request; 
    } 
} 

然后:

using (var webClient = new WebClientEx()) 
{ 
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
    webClient.DownloadFileAsync(new Uri("http://www.example.com"), "setup.rar"); 
} 

我没有测试过这一点,但给它一个去,看看它是否工作。

+0

感谢您的回复,但它不会工作,它只是下载相同的损坏的RAR文件,它给出的错误“归档要么是未知格式或损坏” –

+0

你能发布真实的网址来重现此行为? – nimeshjm

+0

是的,这是网址http://www.sho5es.space/ –