TIdHTTP
및 TIdCompressorZLib
을 사용하여 gzip 압축이 활성화 된 페이지를 가져 오려고합니다. Windows에서 코드는 올바르게 작동하고 데이터의 압축이 풀립니다. 그러나 OSX에서 똑같은 코드가 아직 압축 된 것처럼 보이는 가비지 데이터를 반환하고 있습니다. 어디서 잘못되었는지 보지 못 하겠어? 이 윈도우에 일반 압축 해제 HTML 인 반면OSX에서 TIdHTTP 및 TIdCompressorZLib와 함께 gzip 압축 풀기 문제가 발생했습니다.
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
는, OSX에 원래 압축 쓰레기처럼 보이는 :
이
내가 함께 테스트하고있어 코드입니다.저는 Delphi 10.1 Berlin Update 1과 OSX 10.11을 사용하고 있습니다.
감사합니다. 'IsReady' 속성이 false를 반환한다는 것이 맞습니다. 그것은 zlib 라이브러리가 전혀로드되지 않는 것처럼 보이기 때문에 여러 HTTP 요청 후에 false를 계속 반환합니다.이 버그는 Jan-2016 SVN rev 5330에 소개 된 버그입니다. Uses 목록에'IdZlibHeaders' 유닛을 추가하고 'TIdCompressorZLib' 객체를 생성 한 후에'IdZlibHeaders.Load'라고 불리는데, 이제는 IsReady가 true를 반환하고 gzip 콘텐츠가 압축 해제됩니다. –
예, 원래의 버그는'TIdCompressorZLib'가'IdZLibHeaders.Load()'가 이미 그래서'IsReady'는 단순히'IdZLibHeaders.Loaded()'의 값을 반환했습니다. 수정 프로그램은'IsReady'가 아직 호출되지 않았 으면 대신'Load()'를 호출하도록했습니다. –
Nick C 해결 방법으로도 10.1 베를린에서 해결되었습니다. – Olecramoak