Über ein QHttp Objekt hole ich Daten gzip-komprimiert vom Webserver ab, was soweit auch funktioniert. Nun speicher ich die komprimierten Daten in einem QTemporaryFile zwischen und öffen/lese ich die Datei dann mit der zlib. Die unkomprimierten Daten speicher ich dann in einem QByteArray um mir mit QRegExp die Daten rauszuholen die ich brauch.
Das Problem ist nun, das die unkomprimierten Daten im QByteArray an verschiedenen Stellen jedesmal Fehlerhaft sind, was dann natürlich hin und wieder Salat gibt.
Code: Alles auswählen
header.setValue( "Accept-Encoding", "gzip;q=0.9" );Code: Alles auswählen
QByteArray MyClass::uncompressData( bool &ok )
{
ok = true;
QByteArray uncompressedData;
QTemporaryFile tmp_file( "user" );
if( !tmp_file.open() )
{
qDebug() << "tmp_file not open...";
ok = false;
}
if( ok )
{
tmp_file.write( m_pHttp->readAll() );
if( !tmp_file.flush() )
{
qDebug() << "tmp_file flush error...";
ok = false;
}
if( ok )
{
gzFile gz_file;
gz_file = gzopen( tmp_file.fileName().toLocal8Bit().constData(), "rb9" );
if( !gz_file )
{
qDebug() << "gz_file not open...";
ok = false;
}
if( ok )
{
char buffer[1024 * 4];
while( gzread( gz_file, buffer, 1024 * 4 ) )
{
uncompressedData.append( buffer );
}
if( gzclose( gz_file ) != Z_OK )
{
qDebug() << "gz_file not closed...";
ok = false;
}
tmp_file.close();
}
}
}
return uncompressedData;
}---------
Qt 4.3.2
g++ 3.4.5
Windows XP
AMD64 X2