【问题标题】:Downloading file from Redirecting link从重定向链接下载文件
【发布时间】:2016-05-29 14:35:42
【问题描述】:

我知道如何通过网络客户端下载文件,但问题是我正在从链接下载 .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 它可以重定向链接但不会下载文件

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    我还没有测试过,但试试看它是否有效。

    【讨论】:

    • 感谢您的回复,但它不会工作它只是下载相同的损坏的 rar 文件,它会给出“存档格式未知或损坏”的错误
    • 你能发布真实的网址来重现这种行为吗?
    猜你喜欢
    • 2018-02-18
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多