WebClient.DownloadProgressChanged не работает с GZip - PullRequest
0 голосов
/ 30 декабря 2010

Чтобы использовать WebClient со сжатым содержимым, я расширил его и изменил стандартный веб-запрос следующим образом:

protected override WebRequest GetWebRequest(Uri address)
{
    var req = base.GetWebRequest(address) as HttpWebRequest;
    req.AutomaticDecompression = DecompressionMethods.GZip;
    return req;
}

Это работает нормально, за исключением того, что теперь событие DownloadProgressChanged не запускается, даже если заголовок Content-Length соответствующим образом установлен сервером (сервер не разбивает ответ на части).

Почему это?

РЕДАКТИРОВАТЬ: На самом деле, событие DownloadProgressChanged срабатывает, но он всегда показывает процент от 0 до завершения загрузки, когда он показывает 100. Что вызывает такое поведение?

1 Ответ

0 голосов
/ 30 декабря 2010

Ну, я не слишком уверен, но вижу, что вы не реализовали это полностью.Возможно, поэтому ... у вас могут отсутствовать заголовки.Отражатель показывает немного больше кода.Может быть, вам нужна вторая строка метода.

protected virtual WebRequest GetWebRequest(Uri address)
{
    WebRequest request = WebRequest.Create(address);
    this.CopyHeadersTo(request);
    if (this.Credentials != null)
    {
        request.Credentials = this.Credentials;
    }
    if (this.m_Method != null)
    {
        request.Method = this.m_Method;
    }
    if (this.m_ContentLength != -1L)
    {
        request.ContentLength = this.m_ContentLength;
    }
    if (this.m_ProxySet)
    {
        request.Proxy = this.m_Proxy;
    }
    if (this.m_CachePolicy != null)
    {
        request.CachePolicy = this.m_CachePolicy;
    }
    return request;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...