Конференция "Начинающим" » Непонятная ошибка ZLib
 
  • Pcrepair © (13.02.18 22:31) [0]
    Добрый день. есть следующая ситуация :
    - используется INDY(10.6.2.5354) с ХЕ3 (ВЫНь7)
    - на отдельных сайтах при загрузке страницы выскакивает исключение (IdZLib)
    First chance exception at $7727C54F. Exception class EDecompressionError with message 'ZLib Error (-3)'.

    вот тут

    { EZlibError }

    class procedure EZlibError.RaiseException(const AError: Integer);
    var
     LException: EZlibError;
    begin
     LException := CreateFmt(sZLibError, [AError]);
     LException.FErrorCode := AError;
     raise LException;
    end;



    компрессор подключается : fIdHTTP.Compressor := TIdCompressorZLib.Create(fIdHTTP);

    Вопрос :
    что значит FErrorCode   (-3) и как его преодолеть.
  • KilkennyCat © (14.02.18 03:38) [1]
    Z_DATA_ERROR   (-3)
    взято с http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=index.html

    возможно, те отдельные сайты не поддерживают gzip
  • Pcrepair © (14.02.18 17:17) [2]
    сайт типа http://www.bdo.ru/ или http://www.molzavod.ru/
    иногда все таки все грузит, но чаще нет

    непонятно что вообще там нужно, но настройка
    fIdHttp.HandleRedirects:=FALSE;
    потом идет обработка исключений для восстановления истинного УРЛ

    настройки fIdHttp.Request.AcceptEncoding:='gzip,deflate'; не влияют, хотя может не те параметры?
  • KilkennyCat © (14.02.18 20:25) [3]
    честно говоря, мне сложно что-либо ответить, не видя всей картины. Например, данных с какой-нить прокси-программки, что и как запрашивается, что отвечает на эти запросы сервер и т.д. У инди хватает глюков, поэтому, для начала надо убедиться, что вне инди всё хорошо, и эти ошибки - именно ее.
  • sniknik © (14.02.18 22:30) [4]
    проверь данные, может реально повреждаются... антивирусом может, или размер буфера на разархивирование в компоненте маленький, и не все страницы влазят.
  • han_malign © (16.02.18 14:14) [5]

    > или размер буфера на разархивирование в компоненте маленький

    - тогда было бы Z_STREAM_ERROR, Z_MEM_ERROR или Z_BUF_ERROR...

    zlib.h:
    >     inflate() returns Z_OK if some progress has been made (more input processed
    >   or more output produced), Z_STREAM_END if the end of the compressed data has
    >   been reached and all uncompressed output has been produced, Z_NEED_DICT if a
    >   preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
    >   corrupted (input stream not conforming to the zlib format or incorrect check
    >   value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
    >   if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
    >   Z_BUF_ERROR if no progress is possible or if there was not enough room in the
    >   output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
    >   inflate() can be called again with more input and more output space to
    >   continue decompressing. If Z_DATA_ERROR is returned, the application may then
    >   call inflateSync() to look for a good compression block if a partial recovery
    >   of the data is desired.
 
Конференция "Начинающим" » Непонятная ошибка ZLib
Есть новые Нет новых   [134427   +34][b:0][p:0.001]