Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 00:59   #1
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию не выдерает сорц при 503

Пишу парсер для гугла. при долгом парсинге тебя редиректит на капчу 2мя редиректами.

последняя страница идет с 503 , что через прогу что через оперу.
через хттп аналайзер видно что программа переходит на страницу 503 и получает нужный текст. Но не знаю почему его нету в repsdata.
в idhttp.response.responsetext видно что ошибка 503
PHP код:
var
idhttp:Tidhttp;
respdata:tstringlist;
begin
try
idhttp:=TidHttp.Create;
idhttp.handleredirects:=false;
respdata:=tstringlist.Create;
idhttp.Request.Host:='www.google.ru';
 
idhttp.Request.UserAgent:='Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.00';
 
idhttp.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
 
idhttp.Request.CharSet:='iso-8859-1, utf-8, utf-16, *;q=0.1';
idhttp.Request.Accept:='text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
 
idhttp.Request.Connection:='Keep-Alive, TE';
 
idhttp.Request.CacheControl:='no-cache';
try

respdata.Text:=idhttp.Get('http://www.google.ru/search?q=inurl:'+char(39)+'register.php'+char(39)+'&hl=en&gl=us&start=100');
listbox1.Items.Add('1get');
          
Except
       on e 
EIDHttpProtocolException do
                              if 
e.ErrorCode 302 then
                              
try
                   
respdata.Text:=idhttp.Get(idhttp.Response.Location);
                         
Except
       on e 
EIDHttpProtocolException do
                              if 
e.ErrorCode 302 then   begin
                                 
try

                  
respdata.Text:=idhttp.Get(idhttp.Response.Location);
                   
Except
                            on e 
EIDHttpProtocolException do
                              if 
e.ErrorCode 503 then   begin



                                form4
.Memo1.text:=respdata.Text;


                              
end;
                              
end;
                              
end;
                              
end;
                              
end;
finally
  
idhttp.Free;
  
respdata.Free;
end;

end
в memo1 не идет исходник страница. тупо исчезает надпись memo1, что говорит о том, что сохраняется туда пустота из respdata
shanluu вне форума Ответить с цитированием
Старый 27.12.2010, 19:57   #2
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию

Нашел впринцыпе ответ на свой вопрос, но не могу понять как его реализовать в понятной для меня среде (Embarcadero или Delphi 7и т/д) где вместо -> идут .

Суть заключается в выдерании кода, до обработки исключения
Ответ=
PHP код:
void __fastcall TForm1::HTTPClientWorkEnd(TObject *ASenderTWorkMode AWorkMode)
{
  
HTTPClient->Response->ContentStream->Position=0;
  
URLMemo->Lines->LoadFromStream(HTTPClient->Response->ContentStream);

shanluu вне форума Ответить с цитированием
Старый 27.12.2010, 21:13   #3
shanluu
Пользователь
 
Аватар для shanluu
 
Регистрация: 05.10.2010
Сообщений: 53
По умолчанию

Разобрался вообщем.
смущала меня __fastcall, но добавление на форму идхттп и обработки его завершения ( предыдущий пост ) решило эту праблему
shanluu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытие панелей инструментов при открытии и отображение при закрытии документа Василий. Microsoft Office Word 0 23.10.2010 00:41
ошибка при исполнении (что то при установке компонентов) designer999 Компоненты Delphi 0 18.10.2010 22:03
Как обойти 503 в гугле при попытке многократно скачивать содержимое страницы dkdkdk Работа с сетью в Delphi 2 14.01.2010 12:16
создание dll при старте приложения и удаление при завершении TyoshA Общие вопросы Delphi 7 13.07.2009 13:56
Проблема при открытии базы при помощи ADO SlavaSH БД в Delphi 21 30.06.2009 16:51