![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Проблема. Банальный код
Нормально отрабатывает и забирает текст при отсутствии ошибок (код 200). Но, если скрипту не понравились переданные данные, он выдаёт код 500 и в теле страницы описание, что не так. Вот этот текст мне и нужно получить. Как его добыть из TIdHttp? По мапперу я вижу, что страница получена вся. Но заставить IdHttp отдать её мне не получается. IdHttp просто взрывает exception и отказывается отдавать что-либо, кроме очевидной цифры 500. Но пользователю не нравится 500. Он хочет текст ошибки, переданный скриптом! :( |
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
AFAIK
indy9 -читает заголовок -проверяет его -если 200 - читает данные Скорее всего, надо просто дочитать данные из буфера сокета. В indy9 этим занимается не public метод TIdCustomHTTP.ReadResult() PS у меня подобная проблема была, после исключение, данные в буфере оставались, без дисконекта делал повторный запрос и indy читал сразу 2 ответа в одном |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 5 Всего: 158 |
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Если бы так просто...
E.ErrorMessage = '' Но уже не актуально. Индюка я применил, потому что Swin лагал. Swin давал мне всю информацию. Но потом пошли лаги. Пришлось экстренно заменит его на инди. А инди не желает отдавать страницу. Но уже разобрался. Бага была в сервере. Нарушение http протокола. Уже и сервер поправили и свин я научил обходить подобные казусы. Даже перепробовал кучу сторонних WinHTTP библиотек - все глючат, при нарушении протокола. Щас обучил свин обходить ошибку протокола, и проблема исчезла. В планах доработать свин до мультитредовой поддержки http 1.1 Когда руки дойдут... Индюки расстраивают всё больше... Зато свинёнок лучшеет. Попробовал альтерналиву... Не. Свинёнок лучше. Из всех альтернатив, только индюки имеют функциональность "Дай страницу - на" И то не универсальную. У остальных ещё хуже. Всё на колбэках. А свинёнок умеет и так и так. И буду ещё дорабатывать в этом направлении. Нашёл суперкрутой компонент, который чего только не умеет. Аж глаза разбегаются. Но задача проста - дай страницу! Компонент крут. Возможностей вагон, на любой вкус. Но такую простую задачу решает в 20 строк кода. Асинхронного кода... Ну это уже шиза. Свин для того и сделан - сказать "дай" - получи ответ. Вобщем сильно расстроили меня альтернативные решения. Хотя в них нашёл много общего со свином, и тем для размышлений... Вобщем результат приключений прост - альтернативные решения уступают индюкам. Но индюки принципиально непробиваемы. Они диктуют свою волю програмеру, а не наоборот. Не могу сказать, что свин гораздо лучше индюков, но я юзаю именно его, т.к. я его строю именно так, как Я вижу работу с http. Она должна быть гибкой для любых целей и простой для всех. Хотя в этой простате главный минус - диагностика проблем. Если со свином проблема - хрен её поймаешь. А в индюках всё прямолинейно. Но мне как-то не хочется, чтобы библиотека навязывала мне свою политику и ограничения. |
|||
|
||||
CodeGold |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
столкнулся с такой же проблемой - решение не нашел!!!
|
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Через сокеты.
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
CodeGold |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
проще
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |