Описываемый здесь клиент интерпретирует компоненты URL, преобразуя их в комбинацию hostname:port (имя хоста:порт) и path (путь доступа). Имя фрагмента игнорируется. Затем выполняется подключение к указанному серверу с помощью сокета TCP и отправка запроса HTTP в следующей форме.
GET /path/to/document HTTP/1.0 CRLF GRLF
Запрос состоит из указания метода запроса “GET”, за которым следует один пробел и указанный путь доступа, буквально скопированный из URL. Затем — еще один пробел, номер версии протокола, НТТР/1.0, и две пары символов CRLF. После отправки запроса сценарий ожидает ответа от сервера. Типичный ответ выглядит примерно так:
HTTP/1.1 200 ок Date: Wed, 01 Mar 2000 17:00:41 GMT Server: Apache/1.3.6 (UNIX) Last-Modified: Mon, 31 Jan 2000 04:28:15 GMT Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <title>Presto Home Page</title> </head> <body> <hl>Welcome to Presto</hl>
Ответ состоит из двух частей: заголовка, содержащего информацию о возвращаемом документе, и самого затребованного документа. Эти две части разделены пустой строкой, сформированной двумя парами символов CRLF.
Структура ответов HTTP рассматривается более подробно описана в библиотеке LWP. Единственная проблема, которая может возникнуть в данном случае, состоит в том, что протокол HTTP обеспечивает получение заголовка, состоящего из аккуратных строк текста, предназначенных для восприятия человеком и оканчивающихся парой символов CRLF, тогда как сам документ может иметь любой формат. В частности, при использовании этого клиентского сценария можно быть готовым к тому, что будут получены двоичные данные, такие как содержимое файла GIF или MP3.