Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HttpGetText 
:(
    Опции темы
mrmen1
Дата 30.8.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 4.7.2010

Репутация: нет
Всего: нет



в чем проблема?

procedure TForm1.Button3Click(Sender: TObject);
begin
HttpGetText('http://l2top.ru', Memo1.Lines);
end;

выводит пустую страницу... остальные сайты нормально отображает.. возможно нужно представляться как браузер? но как ето сделать
PM MAIL   Вверх
Matematik
Дата 30.8.2010, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Надо правильно обрабатывать ответ сервера.
Конкретно l2top.ru выдает 302  http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%...%D1%8F_HTTP#302
HttpGetText() это делать не умеет.
Тут надо дописывать ручками.
пример - дeлаю запрос HTTPMethod(), проверяю в заголовках ответа поле "location", если оно есть делаю запрос заново с новым URL
Код

function HTTP_GetHeader(AHeaders: TStrings; const AHeaderName:AnsiString):AnsiString;
var j:Integer;
begin
  Result := '';
  for j:=0 to AHeaders.Count-1 do
  begin
    if Pos(AHeaderName, AHeaders[j])=1 then
    begin
      Result := Copy(AHeaders[j], Length(AHeaderName)+1, MaxInt);
      Exit;
    end;
  end;
end;

function HTTP_HeaderLocation(AHeaders: TStrings):AnsiString;
begin
  Result := HTTP_GetHeader(AHeaders, 'Location: ');
end;

function Http_Get(AHTTP: THTTPSend; const URL: string; const Response: TStrings): Boolean;
begin
  Result := AHTTP.HTTPMethod('GET', URL);
  if Result then
    if HTTP_HeaderLocation(AHTTP.Headers)<>'' then
      Result := Http_Get(AHTTP, HTTP_HeaderLocation(AHTTP.Headers), Response)
    else
      Response.LoadFromStream(AHTTP.Document)
end;

function HttpGetText(const URL: string; const Response: TStrings): Boolean;
var
  HTTP: THTTPSend;
begin
  HTTP := THTTPSend.Create;
  try
    result := Http_Get(HTTP, URL, Response)
  finally
    HTTP.Free;
  end;
end;


PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0385 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.