Как получить страницу с вебсервера при помощи 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 и поместить ее в переменную типа строка, вы можете изменить свой код следующим образом:
procedureTForm1.SocketRead(Sender:TObject;Socket:TCustomWinSocket);beginFText:='';whileTruedobeginifnotSocket.ReceiveText(FText)thenBreak;end;end;procedureTForm1.SocketDisconnect(Sender:TObject;Socket:TCustomWinSocket);begin// Здесь вы можете обработать переменную FText// Например, удалить заголовок HTTP и любые дополнительные символыwhilePos('HTTP/',FText)=1doDelete(FText,1,Length('HTTP/'));whilePos(#13#10#13#10,FText)>0doDelete(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
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.