C # распаковать и прочитать файл из HttpWebResponse - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь распаковать и прочитать файл из HttpWebResponse объекта с последующим кодом:

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (MemoryStream ms = new MemoryStream())
{
    response.GetResponseStream().CopyTo(ms);
    ms.Seek(0, SeekOrigin.Begin);

    using (ZipArchive za = new ZipArchive(ms, ZipArchiveMode.Read))
    {
        foreach (ZipArchiveEntry zae in za.Entries)
        {
            using (StreamReader sr = new StreamReader(zae.Open(), Encoding.GetEncoding(1251), true, 2 << 18))
            {
                Console.WriteLine(sr.ReadLine());
            }
        }
    }
}

, но получаю System.IO.InvalidDataException: End of Central Directory record could not be found. Что я делаю не так?

1 Ответ

1 голос
/ 14 октября 2019

Вот то, о чем я думал с GZipStream (просто пример, здесь нет никаких гарантий) ...

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
using (GZipStream gzipStream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
using (StreamReader sr = new StreamReader(gzipStream))
{
    Console.Write(sr.ReadToEnd());
}
...