-
Добрый день. есть следующая ситуация : - используется INDY(10.6.2.5354) с ХЕ3 (ВЫНь7) - на отдельных сайтах при загрузке страницы выскакивает исключение (IdZLib) First chance exception at $7727C54F. Exception class EDecompressionError with message 'ZLib Error (-3)'. вот тут
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) и как его преодолеть.
-
-
сайт типа http://www.bdo.ru/ или http://www.molzavod.ru/иногда все таки все грузит, но чаще нет непонятно что вообще там нужно, но настройка fIdHttp.HandleRedirects:=FALSE; потом идет обработка исключений для восстановления истинного УРЛ настройки fIdHttp.Request.AcceptEncoding:='gzip,deflate'; не влияют, хотя может не те параметры?
-
честно говоря, мне сложно что-либо ответить, не видя всей картины. Например, данных с какой-нить прокси-программки, что и как запрашивается, что отвечает на эти запросы сервер и т.д. У инди хватает глюков, поэтому, для начала надо убедиться, что вне инди всё хорошо, и эти ошибки - именно ее.
-
проверь данные, может реально повреждаются... антивирусом может, или размер буфера на разархивирование в компоненте маленький, и не все страницы влазят.
-
> или размер буфера на разархивирование в компоненте маленький
- тогда было бы 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.
|