Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 9 TIdHTTP und gzip-Encoding (https://www.delphipraxis.net/131071-indy-9-tidhttp-und-gzip-encoding.html)

Codehunter 18. Mär 2009 09:20


Indy 9 TIdHTTP und gzip-Encoding
 
Ich verwende Indy 9 (auf die seit Jahren nicht aus dem Betastadium herauskommende Indy 10 muss ich leider verzichten) und möchte gerne mit TIdHTTP Streams entgegen nehmen, die PHP-serverseitig mit ob_start("ob_gzhandler") komprimiert werden. Bei Indy 9 TIdHTTP gibt es noch kein Compressor-Property wie bei Indy 10.

Ich such mich jetzt schon dumm und fusselig aber finde nichts, das einen gzip-komprimierten MemoryStream entpacken könnte. Die ganzen ZLib-Implementationen die ich bis jetzt durch habe können alle nur ZIP, BZip und BZip2.

Idealerweise wäre mir eine native Routine am liebsten, die keine externen DLLs benötigt. Zumindest keine, die nicht bei jedem Windows vorhanden ist (will auf einen Installer verzichten, EXE-only)

Bernhard Geyer 18. Mär 2009 09:37

Re: Indy 9 TIdHTTP und gzip-Encoding
 
http://sourceforge.net/projects/tpabbrevia/ kann Streams komprimieren.

Ansonsten hat LMD in seinen Packages aufgrund der PNG-Unterstützung eine ZLib-Komponente eingebaut (TLMDCompressionStream, TLMDDecompressionStream). Ansonsten sollte es genügend Units geben welche einen Wrapper um die freien ZLIB-Objektfiles bietet.

Codehunter 18. Mär 2009 10:06

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Zitat:

Zitat von Bernhard Geyer

Ich will ja DEkomprimieren :-) Zweitens finde ich in dem Abbrevia auch nichts das nach GZip aussieht.

Bernhard Geyer 18. Mär 2009 10:24

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Zitat:

Zitat von Codehunter
Zitat:

Zitat von Bernhard Geyer

Ich will ja DEkomprimieren :-) Zweitens finde ich in dem Abbrevia auch nichts das nach GZip aussieht.

Kann auch dekomprimieren:

Delphi-Quellcode:
    GzHelp := TAbZLStreamHelper.Create(StreamIn);
    try
      GzHelp.ReadHeader;
      GzHelp.ExtractItemData(StreamOut);
      GzHelp.ReadTail;
    finally
      GzHelp.Free;
    end;

Codehunter 18. Mär 2009 10:39

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Ok bekanntlich führen ja viele Wege nach Rom. Abbrevia scheint mit dem gzip unseres Webservers jedenfalls nicht umgehen zu können, es kommt nur Datenmüll am Ende heraus. Ich habe dann einfach am Server von gzip auf deflate (bzip) umgestellt, da klappte es auf Anhieb mit der ZLib.

Assertor 18. Mär 2009 11:36

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Hallo,

Zitat:

Zitat von Codehunter
auf die seit Jahren nicht aus dem Betastadium herauskommende Indy 10 muss ich leider verzichten

Bitte zeige mir einen Link, der Indy 10 offiziell als Beta kennzeichnet :roll: Dann lieber Indy 9, Delphi 5 und vielleicht noch Win98 als OS, richtig?

Indy ist im permanenten Zustand der Weiterentwicklung, das macht aber noch lange keine Beta daraus. Sowas betrifft auch die JEDIs und auch alle möglichen kommerziellen Libraries. Dort gibt es manchmal im Tagesabstand Updates/Fixes...

Zitat:

Zitat von Codehunter
Ich such mich jetzt schon dumm und fusselig aber finde nichts, das einen gzip-komprimierten MemoryStream entpacken könnte. Die ganzen ZLib-Implementationen die ich bis jetzt durch habe können alle nur ZIP, BZip und BZip2.

ZIP ist schonmal ganz verkehrt, daß kann ZLib bestimmt nicht da hier die Struktur-Informationen fehlen. gz und z Kompression sind auf jeden Fall in allen aktuellen zLib Implementationen dabei und z.B. in zLibEx enthalten (aber auch in D2006, D2007, D2009). Ohne externe Abhängigkeiten zur Laufzeit.

Oder mal das probieren: Decompress .gz files with zlib unit. Eine Möglichkeit ist, die WindowBits anzupassen...

Infos zu zLib gibt es auf der offiziellen Homepage.

Gruß Assertor

Codehunter 18. Mär 2009 12:25

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Zitat:

Zitat von Assertor
Bitte zeige mir einen Link, der Indy 10 offiziell als Beta kennzeichnet

http://indyproject.org/Sockets/wizar...Wizard.DE.aspx

Bei Version 8 und 9 "Stable", bei 10 "Work in progress" - Heißt für mich, das ist noch nicht mal in einem Beta-Stadium angekommen...

Zitat:

Zitat von Assertor
Dann lieber Indy 9, Delphi 5 und vielleicht noch Win98 als OS, richtig?

Jepp, außer Win98 ;-) Ich arbeite tatsächlich noch mit D5 Pro.

Die Links werd ich mir in ner ruhigen Minute mal zu Gemüte führen.

Assertor 18. Mär 2009 13:01

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Zitat:

Zitat von Codehunter
bei 10 "Work in progress" - Heißt für mich, das ist noch nicht mal in einem Beta-Stadium angekommen...

Die Webseiteninhalte sind hoffnungslos veraltet. Der Text stammt 1:1 noch aus D2005 Zeiten. Wir haben gerade mal ein neues Layout bekommen und alle Texte von der alten Webseite übernommen. Gleiches gilt für die Indy Hilfe in D200x. Das ist nunmal so bei einem Freiwilligen-Projekt...

Aber ich kann aus 1. Hand sagen: Indy 10 wird schon lange produktiv eingesetzt - bei D2009 hast Du dann auch keine andere Möglichkeit mehr. Es gibt sehr viel bekannte Software die darauf baut. Ich selbst nutze es auch im Produktiveinsatz. Das ist für mich, wie eine Diskussion, ob man noch Kassette nehmen sollte oder besser CD/DVD... :roll:

Meinetwegen können ja alle einige dabei bleiben, vergleichbar der BDE bei "Datenbanken". Aber wenn es geht, bitte solche Software nicht auf Kunden loslassen :mrgreen:

Zitat:

Zitat von Codehunter
Die Links werd ich mir in ner ruhigen Minute mal zu Gemüte führen.

Sind recht interessant. Vor allen Dingen ist zLib eine Standardlibrary, da ist es immer gut diese zu beherrschen.

Gruß Assertor

Assertor 29. Mär 2009 21:33

Re: Indy 9 TIdHTTP und gzip-Encoding
 
Hi,

ich verlink mal zu einem anderen Thread mit entsprechender Lösung:
http://www.delphipraxis.net/internal...020244#1020244

Gruß Assertor


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz