Проблемы с TwebBrowser - OnDownloadComplate
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Столкнулся с проблемой при использовании события OnDownloadComplate.
Оно выполняется в любом случае, как бы там загрузка не завершилась.
Как можно определять ответ сервера, например 200, 404, 502 и т.п.?
Оно выполняется в любом случае, как бы там загрузка не завершилась.
Как можно определять ответ сервера, например 200, 404, 502 и т.п.?
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
If Pos('404',...)>0 then...
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Да понятно это, где ее искать???
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
Прям в Body WebBrowser'а и ищи.Nikoshka писал(а):Да понятно это, где ее искать???
Код: Выделить всё
procedure TfmBrowserForm.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
sBody:string;
iDoc:IHtmlDocument2;
body:IHTMLElement;
begin
If not assigned((pDisp as IWebBrowser).Document) then Exit;
(pDisp as IWebBrowser).Document.QueryInterface(IHtmlDocument2,iDoc);
If not assigned(iDoc) then Exit;
body:=iDoc.body;
If not assigned(body) then Exit;
sBody:=body.innerHTML;
If (Pos('<H3>Service Unavailable</H3>',sBody)>0) or (Pos('<H3>Gateway Timeout</H3>',sBody)>0) or (Pos('<H1>Internal Server Error</H1>',sBody)>0) then
begin
iDoc.url:=iDoc.url;
Exit;
end;
end;
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
А цивилизованными методами получить ответ с сервера никак нельзя?
Он же и недоступен может быть, тогда я никакой страницы не получу...
В таком случае, если сервер недоступен я вообще получаю ошибку, когда пытаюсь обратится к doc.all
Он же и недоступен может быть, тогда я никакой страницы не получу...
В таком случае, если сервер недоступен я вообще получаю ошибку, когда пытаюсь обратится к doc.all
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
на более низком уровне можно я думаю, через сокет напримерNikoshka писал(а):А цивилизованными методами получить ответ с сервера никак нельзя?
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Гм... ничего не понял, а почему сам браузер от нас это спрячет? Ведь он так или иначе что-то от сервера получает? Или он вообще ничего не получает?
Можно и сокетами, конечно... эх
Можно и сокетами, конечно... эх

- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
У меня нет возможности проверить компоненту TWebBrowser, но могу предположить что у неё есть отдельное событие на ошибки, и в него он складывает все ошибки которые у него возникают, в том числе и ошибка соединения. У сокетов ведь тоже OnConnect не возвращает ошибку 

SergeyS,
Да я все наделся, что у него есть свойство, а я там найду все ответы на все вопросы моей программы серверу
Хорошо, попробую поискать. Но 404 не ошибка, это сервер обрабатывает запрос и отдает реально существующую страницу http://site.ru/404.html поэтому незнаю даже как на это браузер отреагирует...
Да я все наделся, что у него есть свойство, а я там найду все ответы на все вопросы моей программы серверу

Хорошо, попробую поискать. Но 404 не ошибка, это сервер обрабатывает запрос и отдает реально существующую страницу http://site.ru/404.html поэтому незнаю даже как на это браузер отреагирует...
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Так тогда тебе не TWebBrowser рыть нужно, а сам сервер на возможность получения вразумительного ответа.Но 404 не ошибка, это сервер обрабатывает запрос и отдает реально существующую страницу http://site.ru/404.html поэтому незнаю даже как на это браузер отреагирует...
Попробуй сформулировать задачу по-другому, глядишь и ответ другой придет.
Правильно поставить вопрос это половина дела, если не больше...