Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить код страницы. [D7, XP]


oleg_teacher ©   (2014-08-08 10:44:00) 

Господа программисты, помогите решить как по мне не стандартный вопрос. Мне необходимо с помощь например Инди получить код страницы. Использую алгоритм:
     
     stream:TStream;
     st:tstrings;
.................................................
     IdHTTP.Get(href,stream);
     stream.Position:=0;
     st.LoadFromStream(stream);


sniknik   (2014-08-10 00:50:00) [1]

+
связано, сначала не обратил внимания на используемую функцию (куски старой программы в которой, проверил, страница таки получатся, правда не там где ее обычно ждут)
function TMainForm.HTTPGet(const url: string; Data: TMemoryStream): string;
var
 len: integer;
begin
 SetProxy;
 SetSSL(url);
 try
   result:= HTTP.Get(url);
   edAcEnc.Text:= HTTP.Response.ContentEncoding;
   //if HTTP.Response.ContentEncoding = 'gzip' then
   //  result:= GZDecompressStr(result);
   len:= Length(result);
   if len > 0 then
     Data.WriteBuffer(result[1], len);
 finally
   HTTP.Disconnect;
 end;
end;


sniknik   (2014-08-10 00:43:00) [2]

procedure TMainForm.onError(const mes: string);
begin
 with REdContent do begin
   DefAttributes.Color:= clRed;
   Text:= mes;
 end;
end;

procedure TMainForm.ButGetClick(Sender: TObject);
begin
 Screen.Cursor:= crHourGlass;
 try
   try
     REdContent.DefAttributes.Color:= clBlack;
     REdContent.Lines.Text         := HTTPGet(Trim(EdUrl.Text));
   except
      on E: EIdHTTPProtocolException do onError(E.ErrorMessage);
     on E: Exception do onError(E.Message);
   end;
 finally
   Screen.Cursor:= crDefault;
 end;
end;


oleg_teacher   (2014-08-09 11:53:00) [3]

а как же побороть такую проблему? что использовать?


Плохиш   (2014-08-08 16:16:00) [4]

хм, тут написано, что облом

https://www.eldos.com/forum/read.php?PAGEN_1=2&FID=7&TID=3852#nav_start


oleg_teacher   (2014-08-08 15:43:00) [5]

а, и забыл.. кусочек кода получения гет запроса я брал в try except end; Не помагает.. просто если что исключение срабатывает(


oleg_teacher   (2014-08-08 15:39:00) [6]

Поставил параметр hoNoProtocolErrorException .. игнорирует ошибки, но код страницы так и не доступен... то есть пустая строка((( как браузеры и сниферы игнорируют ошибки?? хм...


oleg_teacher   (2014-08-08 15:09:00) [7]

Установил, ошибка продолжается... получить код страницы не могу((


Плохиш   (2014-08-08 14:24:00) [8]

установи флаг hoInProcessAuth в TIdHTTP.HTTPOptions


oleg_teacher   (2014-08-08 10:45:00) [9]

Как мне получить ответ от сервера (код страницы) даже при ошибке?


oleg_teacher   (2014-08-08 10:44:00) [10]

При получении выскакивает ошибка:
c2n.me/iGZj6V
Захожу на сайт dond upv ille.com/login
(Все пробелы убрать)
Думал есть какая то моя ошибка получения, и попробовал использовать браузер+снифер... когда в браузере ввожу тот же адрес - в снифере видно тот же 401 код ошибки, НО в браузере всеравно показывает код страницы. (редиректов никаких нет).
Использую снифер+свой код программы.... та же ошибка в снифере показана, но!!!! в снифере видно, что есть код страницы.. почему я не могу получить в IdHTTP?
Ответ снифер+программа c2n.me/iGZrKf
Ответ снифер+браузер: c2n.me/iGZvV4


Наверх

Титульная страница Поиск, карта сайта Написать письмо