Brainfreeze с GZIP-файлом, содержащим XML-файл, который я хочу в качестве потока - PullRequest
0 голосов
/ 26 ноября 2011

это печет мне голову, мне нужен XML-фид, но фид находится внутри gzip-файла.теперь я могу загрузить, распаковать, сохранить файл и т. д.

, но я хочу получить gzip в памяти, поместить содержимое в память, прочитать содержимое в память и передать его в сериализатор

проблема здесь в том, что результаты содержат нечитаемый тарабарщина, и reader1 и reader оба не содержат ни одного.Я пропускаю еще одну строку здесь, но, кажется, не могу найти, что это такое.

var request = (HttpWebRequest)HttpWebRequest.Create("urltofeed.com");
request.Credentials = CredentialCache.DefaultCredentials;
// auto unpack gzip
request.AutomaticDecompression = DecompressionMethods.GZip;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader data = new StreamReader(response.GetResponseStream()); 
var result = data.ReadToEnd();

XmlReader reader1 = XmlReader.Create(response.GetResponseStream());
var reader = new XmlTextReader(response.GetResponseStream());

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Direclty от MSDN :

            //Create the decompressed file.
            using (FileStream outFile = File.Create(origName))
            {
                using (GZipStream Decompress = new GZipStream(inFile,
                        CompressionMode.Decompress))
                {
                    // Copy the decompression stream 
                    // into the output file.
                    Decompress.CopyTo(outFile);

                    Console.WriteLine("Decompressed: {0}", fi.Name);

                }
            }

Так что в вашем случае что-то вроде

using (var GZipStream decompress = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
    // XmlReader reader1 = XmlReader.Create(decompress);
    // or ? var reader = new XmlTextReader(decompress);
}
0 голосов
/ 27 ноября 2011

Вы должны распаковать gzip-файл, этот шаг отсутствует. Попробуйте это: GZipStream и декомпрессия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...