WebClient загружает поврежденный файл в Windows 8.1

1

У меня есть простой код, который загружает файл с указанного URL-адреса, и он отлично работает в Windows 7, но когда я запускаю его в Windows 8.1, загруженный файл поврежден. В чем проблема?

Это код и URL:

WebClient wClient = new WebClient();
wClient.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", "dl.xlsx");
  • 0
    Попробовал этот код в LINQPad на Windows 8, и он работал как положено, загрузив копию файла, который можно было открыть в Google Docs. Повреждение файла может быть вызвано чем-то другим.
  • 0
    Что в файле?
Показать ещё 1 комментарий
Теги:
webclient

2 ответа

1
Лучший ответ

Этот URL-адрес не обеспечивает то, что вы ожидаете. Используйте Fiddler, чтобы узнать, что происходит на уровне HTTP. Вам нужно узнать, что серверу необходимо в качестве входных данных для ответа на правильный контент.

1

Благодаря usr для справки, я нашел проблему, сервер возвращает файл в формате GZip, поэтому я адаптировал код:

public class WebDownload : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
        if (request != null)
        {
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
        }
        return request;
    }
}

Но все же я не знаю, почему мой начальный код работает без проблем на моем ПК!

  • 0
    Это также работает для загрузки вложения из tfs (сервера Team Foundation) через остальные API. (Windows 10) Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню