3

ブースト gzip フィルターを使用して、http 本文の応答を圧縮解除しようとしています。どこでも提供されている標準のコード例を使用しています。

std::string source = "c:\\install\\data.gz";
std::string destination = "c:\\install\\data.txt";

using namespace std;
using namespace boost::iostreams;

ifstream file(source, ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
in.push(gzip_decompressor());
in.push(file);
ofstream unzipped(destination, std::ios::out | std::ios::binary);
boost::iostreams::copy(in, unzipped);

このシナリオでは、以前にページのコンテンツをソース ファイルに保存しました。問題は、このコードが gzip エンコーディングを使用する一部のサイト (たとえば、http://mail.ru - 最大のロシアのポータル) では機能しないことです。http://bing.comなどの他のサイトは、完全に圧縮解除されています。

GZipStream を使用して保存されたデータをテストする小さなコードを作成しました。mail.ru でも問題なく動作します。

String source = @"c:\install\data.gz";
String destination = @"c:\install\data.txt";

using (FileStream inFile = new FileStream(source, FileMode.Open))
{
    using (FileStream outFile = File.Create(destination))
    {
        using (GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress))
        {
            Decompress.CopyTo(outFile);
        }
    }
}

mail.ruまたはgzipの何が問題なのか誰か説明できますか?

4

0 に答える 0