Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как запросить страницу с сайта 2

Delphi , Интернет и Сети , Сокеты

Как запросить страницу с сайта 2

Автор: http://www.sources.ru

{
Присоедините следующий обработчик к Вашему TClientSocket.
Он получает файл с сервера и помещает его в строковую переменную
FText string variable. Однако он не убирает заголовок,
который так же посылается вебсервером.

Не забудьте задать правильный адрес сервера в объекте Socket.
Установите порт 80. А затем откройте его при помощи команды "Socket.Open;".

Автор: E.J.Molendijk
 }

const
  WebPage = '/index.html';
var
  FText: string;

procedure TForm1.SocketWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendText('GET ' + Webpage + ' HTTP/1.0'#10#10);
end;

procedure TForm1.SocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FText := FText + Socket.ReceiveText
end;

procedure TForm1.SocketConnecting(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FText := '';
end;

procedure TForm1.SocketDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  { --- }
  { ЗДЕСЬ ВЫ МОЖЕТЕ ОБРАБАТЫВАТЬ ВАШ FText !!! }
  { --- }
end;

procedure TForm1.SocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  ErrorCode := 0; { Ошибки игнорируем }
end;

Передать страницу с сайта 2 вам нужно модифицировать процедуру SocketWrite в вашем коде.

Вместо отправки raw GET-запроса, вы должны отправить HTTP-запрос с заголовками и параметрами. Вот пример:

procedure TForm1.SocketWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendText('GET ' + WebPage + ' HTTP/1.0'#10'Host: ' + ServerAddress + '#10');
end;

В этом коде замените ServerAddress на актуальный адрес сервера, к которому вы подключаетесь (например, "www.site2.com"). Это отправит GET-запрос для указанной страницы на сервер.

Кроме того, в вашей процедуре SocketRead вы получаете данные и добавляете их к FText. Однако это не подходит для обработки HTTP-ответов, потому что они содержат несколько строк текста. Вы должны парсить ответ строку за строкой:

procedure TForm1.SocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  Line: string;
begin
  repeat
    Line := Socket.ReceiveText;
    if Pos(#13#10, Line) > 0 then
      FText += Line
    else
      FText += Line + #13#10;
  until Line = '';
end;

В этом коде будет получаться ответ строку за строкой и добавляться к FText с символом возврата каретки и новой строки в конце каждой строки. Это подходит для обработки HTTP-ответов.

Помните, что это базовый пример и не обрабатывает все возможные крайние случаи или ошибочные сценарии. Вам может потребоваться добавить больше логики в зависимости от вашей конкретной необходимости.

Данная статья описывает способ запроса страницы с веб-сайта, используя компонент TClientSocket Delphi, и обработку полученных данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сокеты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:14:19/0.0057408809661865/1