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

Как получить страницу с вебсервера при помощи TClientSocket и поместить её в строковую переменную

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

Как получить страницу с вебсервера при помощи TClientSocket и поместить её в строковую переменную

Автор: E.J.Molendijk


{
Присоедините следующий обработчик к Вашему 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;

Передать страницу с веб-сервера с помощью TClientSocket и поместить ее в переменную типа строка, вы можете изменить свой код следующим образом:

procedure TForm1.SocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FText := '';
  while True do
  begin
    if not Socket.ReceiveText(FText) then Break;
  end;
end;

procedure TForm1.SocketDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  // Здесь вы можете обработать переменную FText
  // Например, удалить заголовок HTTP и любые дополнительные символы
  while Pos('HTTP/', FText) = 1 do
    Delete(FText, 1, Length('HTTP/'));
  while Pos(#13#10#13#10, FText) > 0 do
    Delete(FText, 1, 4);
end;

В процедуре SocketRead мы продолжаем получать текст из сокета, пока он не вернет False. Таким образом, вы получаете все данные, отправленные сервером.

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

Обратите внимание, что вам нужно установить правильный адрес сервера в объекте TClientSocket и открыть его командой Socket.Open;.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 03:34:02/0.0033221244812012/0