![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Indy v.8 Получение Header ответа сервера.
panov © (2004-05-28 11:54:00)Не нашел возможности получить заголовок ответа от сервера.
Пример есть только с использованием TIdLogDebug.
Или я не понимаю чего-то, или в tIdHTTP.Response есть только выжимки из заголовка?
Можно ли получить заголовок целиком без использования TIdLogDebug?
panov (2004-05-31 09:59:00) [1]>nikkie © (30.05.04 18:18) [8]
Спасибо за развернутый комментарий.
Думаю, что придется все-таки наследоваться.
nikkie (2004-05-30 18:18:00) [2]>Попробую на работе с RetrieveHeaders и GetHeaders.
не знаю, что ты с ними собираешься сделать. я предлагал просто сорсы почитать. что-либо сделать, я думаю, не получится - это невиртуальные protected методы. ни вызвать их, ни вклиниться в них нельзя.
>TIdLogDebug
он выдает ведь еще всякую доп.информацию типа "Sent/Received" и дата/время? так что подсчитать количество байт в заголовке таким способом затруднительно, имхо.
>А вот с наследованием - не вижу особого смысла ради получения заголовка переопределять класс
что мне нравится в Indy - при наличии исходников, нужные методы они не стесняются делать виртуальными, и сделать своего наследника с исправленной функциональностью проблем не представляет. по-крайней мере пока мне это всегда удавалось.
нет, если не хочется делать наследника - можешь собрать исходный заголовок из ExtraHeaders и остальных полей (обратно тому, как это делается в TIdHeaderInfo.GetHeaders) и посчитать длину. мне кажется переопределить Readln проще и элегантнее.
несовместимость моет ьбыть в разных версиях Indy...
а вот это уже весело. ты попробуй ради интереса перенести свой код с использованием TIdLogDebug на Indy9 - и после этого делай выводы на тему несовместимостей с другими версиями. вот чем разработчики Indy никогда не озабачивались, это backward-совместимостью. и, наверное, это самый главный недостаток Indy. так что вариант с наследованием будет заведомо переносимее варианта с TIdLogDebug.
panov (2004-05-30 12:33:00) [3]Спасибо всем.
Сейчас пока в TIdLogDebug вытаскиваю заголовок.
>nikkie © (30.05.04 00:14) [6]
Попробую на работе с RetrieveHeaders и GetHeaders.
А вот с наследованием - не вижу особого смысла ради получения заголовка переопределять класс - несовместимость моет ьбыть в разных версиях Indy...
nikkie (2004-05-30 00:14:00) [4]>panov
нет, в Response все-таки есть весь хедер. просто он не в виде одного stringlist. часть полей хедера разобрана в поля Response, а остальные поля доступны в виде Stringlist-а ExtraHeaders, см. методы TIdHTTP.RetrieveHeaders и TIdHeaderInfo.GetHeaders.
...для подсчета его размера.
имхо сделать это можно легко, если унаследоваться от TIdHTTP и переопределить метод Readln.
Algol (2004-05-29 19:24:00) [5]
> Что такое RawHeaders? Откуда?
Да, только что посмотрел, в 8-й версии этого свойства нет, а в 9-й есть :)
panov (2004-05-28 23:06:00) [6]>Verg © (28.05.04 22:31) [3]
Увы, в Response только часть полей, да и надо мне не сами поля, а полный заголовок для подсчета его размера.
Verg (2004-05-28 22:31:00) [7]А разве сам Response - это не то, что нужно?
panov (2004-05-28 21:55:00) [8]>Algol (28.05.04 16:30) [1]
Что такое RawHeaders? Откуда?
Algol (2004-05-28 16:30:00) [9]idHTTP1.Response.RawHeaders.ConvertToStdValues(Memo1.Lines);
не оно ?