Ich versuche, eine Seite mit Gzip-Komprimierung aktiviert, mit und TIdCompressorZLib
. Unter Windows funktioniert der Code einwandfrei und die Daten werden dekomprimiert. Aber der exakt gleiche Code auf OSX gibt Mülldaten zurück, die aussehen, als ob sie noch komprimiert wären. Ich kann nicht wirklich sehen, wo es falsch läuft?Gzip Dekomprimierungsproblem auf OSX mit TIdHTTP und TIdCompressorZLib
Dies ist der Code, den ich mit dem Testen bin:
with TIdHTTP.Create(nil) do begin
HandleRedirects := true;
Compressor := TIdCompressorZLib.Create(nil);
Request.AcceptEncoding := 'gzip, deflate';
Data := Get('http://google.com.au');
Compressor.Free;
Free;
WriteLn(Data);
end;
Data
sieht aus wie das Original komprimiert Müll auf OSX, während es klar dekomprimierte HTML unter Windows ist.
Ich benutze Delphi 10.1 Berlin Update 1 und OSX 10.11.
Danke. Sie haben Recht, dass die Eigenschaft 'IsReady' den Wert false zurückgegeben hat. Es gibt nach mehreren HTTP-Anfragen ständig false zurück, da die zlib-Bibliothek anscheinend überhaupt nicht geladen wird, was vermutlich der im Jan-2016 SVN rev. 5330 eingeführte Fehler ist. Ich habe die 'IdZlibHeaders'-Einheit zur Liste verwendet und 'IdZlibHeaders.Load' genannt, nachdem das' TIdCompressorZLib' Objekt erstellt wurde, und nun'IsReady' zurückgibt und der Inhalt von gzip dekomprimiert wird –
Ja, der ursprüngliche Fehler war, dass 'TIdCompressorZLib' 'IdZLibHeaders.Load()' bereits erwartet hatte So wurde 'IsReady' einfach den Wert von' IdZLibHeaders.Loaded() 'zurückgegeben. Die Lösung bestand darin, 'IsReady' stattdessen' Load() 'aufzurufen, falls es noch nicht aufgerufen wurde. –
Nick C Workaround hat es auch für mich auf 10.1 Berlin behoben. – Olecramoak