2016-05-29 3 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"); 

WebClient можно загрузить файл, но поврежден и

Я использовал 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

Можете ли вы опубликовать реальный URL-адрес для воспроизведения этого поведения? – nimeshjm

+0

Да, это URL-адрес http://www.sho5es.space/ –

Смежные вопросы