Прочитать сжатый(gzip) ответ сервера c#

patlat

Client
Регистрация
21.09.2016
Сообщения
175
Благодарностей
47
Баллы
28
Подскажите пжта, кто сталкивался. В чём суть: получаю я ответ от сервера вот в таком формате
ac
‹ ЊђЛѓ Dчэ
ТЅЏ[*Ры/6\ ЁСK[яѕQBм’ЭLfО,FчдмуВcъ5™-ИГ¶УвШШ8¬\ЅҐЭџсQЖЩЈmЖљрKЎЭwБЮЌхX_•МҐИЎМAdPЭАѓѓМ TPU\q~MYэ†ъ8 ҐRITЏCЧSД„ј'Qnн"’Ф·ScРD„Џ˜.Огt>ЦEёэ яя
a
ЁЋЕ~
0
Мне необходимо прочитать данное содержание...
Что я сделал, загнал данный текст в файл test.gz и попытался отработать его вот так:

Код:
            string str = File.ReadAllText("test.gz");
            byte[] temp = Encoding.Unicode.GetBytes(str);
            Stream stream = new MemoryStream(temp);
            string strok = null;

            using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress))
            {
                using (var reader = new StreamReader(gzipStream, Encoding.GetEncoding("UTF-8")))
                {
                     strok = reader.ReadToEnd();
                    Console.WriteLine(strok);
                }

            }
И получил ошибку "Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip.".., пробовал в начала текста проставить 1f 8b, не помогло.

Если кто знает как прочитать данный текст, пжта подскажите.

- удалить строку "Accept-Encoding: gzip" из заголовков перед отправкой на сервер, не вариант.., так же не вариант в сниффере отправлять запрос без указания кодировок...
 

vmc

Client
Регистрация
15.03.2015
Сообщения
72
Благодарностей
13
Баллы
8
Привет!
Получилось решить задачу?

Я нашёл такое решение, не знаю, как прикрутить GZipStream к проекту

Код:
public static void CopyTo(Stream src, Stream dest) {
    byte[] bytes = new byte[4096];

    int cnt;

    while ((cnt = src.Read(bytes, 0, bytes.Length)) != 0) {
        dest.Write(bytes, 0, cnt);
    }
}

public static byte[] Zip(string str) {
    var bytes = Encoding.UTF8.GetBytes(str);

    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream()) {
        using (var gs = new GZipStream(mso, CompressionMode.Compress)) {
            //msi.CopyTo(gs);
            CopyTo(msi, gs);
        }

        return mso.ToArray();
    }
}

public static string Unzip(byte[] bytes) {
    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream()) {
        using (var gs = new GZipStream(msi, CompressionMode.Decompress)) {
            //gs.CopyTo(mso);
            CopyTo(gs, mso);
        }

        return Encoding.UTF8.GetString(mso.ToArray());
    }
}

static void Main(string[] args) {
    byte[] r1 = Zip("StringStringStringStringStringStringStringStringStringStringStringStringStringString");
    string r2 = Unzip(r1);
}
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)