Страница 1 из 2

Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 07 янв 2007, 03:12
Nikoshka
Столкнулся с проблемой при использовании события OnDownloadComplate.
Оно выполняется в любом случае, как бы там загрузка не завершилась.
Как можно определять ответ сервера, например 200, 404, 502 и т.п.?

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 08 янв 2007, 14:09
Blood_Magic
If Pos('404',...)>0 then...

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 08 янв 2007, 14:54
Nikoshka
Да понятно это, где ее искать???

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 09 янв 2007, 01:12
Blood_Magic
Nikoshka писал(а):Да понятно это, где ее искать???
Прям в Body WebBrowser'а и ищи.

Код: Выделить всё

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;

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 09 янв 2007, 11:02
Nikoshka
А цивилизованными методами получить ответ с сервера никак нельзя?
Он же и недоступен может быть, тогда я никакой страницы не получу...

В таком случае, если сервер недоступен я вообще получаю ошибку, когда пытаюсь обратится к doc.all

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 09 янв 2007, 11:37
Blood_Magic
Nikoshka писал(а):А цивилизованными методами получить ответ с сервера никак нельзя?
на более низком уровне можно я думаю, через сокет например

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 09 янв 2007, 11:45
Nikoshka
Гм... ничего не понял, а почему сам браузер от нас это спрячет? Ведь он так или иначе что-то от сервера получает? Или он вообще ничего не получает?

Можно и сокетами, конечно... эх :(

Re: Проблемы с TwebBrowser - OnDownloadComplate

Добавлено: 09 янв 2007, 13:20
SergeyS
У меня нет возможности проверить компоненту TWebBrowser, но могу предположить что у неё есть отдельное событие на ошибки, и в него он складывает все ошибки которые у него возникают, в том числе и ошибка соединения. У сокетов ведь тоже OnConnect не возвращает ошибку :)

Re: Проблемы с TwebBrowser - OnDownloadComplate

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

Re: Проблемы с TwebBrowser - OnDownloadComplate

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