Hallo,
weil ich hierzu eben einen halben Tag 'vermplempert' habe und im Vorfeld im WWW nichts passendes fand, hier einmal ein paar Hinweise für einen HTTP - Server, der ZIP oder GZIP - komprimierte Anfragen bearbeitet.
Ich hatte folgende Aufgabe:
Ein HTTP Server erhält Anfragen mit Streamdaten (Method GET oder POST), die komprimiert sind. Diese müssen dekompriert , ausgewertet und beantwortet werden. Schließlich ist die Antwort ebenso komrimiert wieder zum Client zu schicken.
Eigentlich ist die Lösung ganz einfach:
Wir brauchen eine IdHTTPServer - Komponente sowie eine IdCompressorZLib - Komponente.
Beides ist bei meinem D2009 Prof. standardmäßig mit installiert.
Ja, das war's auch schon.
Falls jemand noch einen Tipp hat, wie man an dieser Stelle mit BZIP2 - komprimierten Dateien umgeht, wäre ich dankbar.
Grüße
Tino
weil ich hierzu eben einen halben Tag 'vermplempert' habe und im Vorfeld im WWW nichts passendes fand, hier einmal ein paar Hinweise für einen HTTP - Server, der ZIP oder GZIP - komprimierte Anfragen bearbeitet.
Ich hatte folgende Aufgabe:
Ein HTTP Server erhält Anfragen mit Streamdaten (Method GET oder POST), die komprimiert sind. Diese müssen dekompriert , ausgewertet und beantwortet werden. Schließlich ist die Antwort ebenso komrimiert wieder zum Client zu schicken.
Eigentlich ist die Lösung ganz einfach:
Wir brauchen eine IdHTTPServer - Komponente sowie eine IdCompressorZLib - Komponente.
Beides ist bei meinem D2009 Prof. standardmäßig mit installiert.
Code:
uses ... IDZlib; procedure Tf_server.HTTPServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Var tmpStream:TStream; begin //decompress request - data tmpstream:=TMemoryStream.Create; //for zip - compression IdCompressorZLib.DecompressHTTPDeflate(ARequestInfo.PostStream,tmpStream); // for gZip - compression IdCompressorZLib.DecompressGZipStream(ARequestInfo.PostStream,tmpStream); // do something with tmpstream // compress the answer / response // imagine resultdata in tmpstream again // zip - compression IdCompressorZLib.CompressHTTPDeflate(tmpStream,AResponseInfo.ContentStream,4); // gzip - compression IdCompressorZLib.CompressStream(tmpStream,AResponseInfo.ContentStream,9,GZIP_WINBITS,9,0); tmpstream.free; end;
Ja, das war's auch schon.
Falls jemand noch einen Tipp hat, wie man an dieser Stelle mit BZIP2 - komprimierten Dateien umgeht, wäre ich dankbar.
Grüße
Tino