Ehhez mindössze arra van szükségünk, hogy a lekérdezni kívánt webhely távoli kiszolgálójának 80-as port-jára egy GET parancsot küldünk, a következő formában:
GET / HTTP/1.0{CR/LF}{CR/LF}{CR/LF}
Ekkor válaszként ugyanilyen formában megkapjuk a kívánt adatokat, valamint annak a webhelynek a tartalmát is szöveges formátumban, melyet vizsgálunk.
Lássuk, hogyan valósítjuk meg mindezt a gyakorlatban.
A megoldáshoz felhasználunk az Internet komponenspalettáról egy ClientSocket egyedet. Ennek az OnConnect eseményéhez az alábbi kódot írjuk:
ClientSocket1.Socket.SendText('GET / HTTP/1.0'+#13+#10+#13+#10+#13+#10);
Amennyiben a ClientSocket csatlakozott a távoli kiszolgálóhoz, a fenti kéréssel fordul hozzá. A választ az OnRead esemény bekövetkeztekor kiíratjuk a Memo-ba.
Memo1.Lines.Add(ClientSocket1.Socket.ReceiveText);
A csatlakozás akkor történik meg, ha megnyomjuk a Validate gombot:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
ClientSocket1.Close;
ClientSocket1.Host:=Edit1.Text;
ClientSocket1.Port:=80;
ClientSocket1.Open;
end;
A Memo-ban nem jelenítjük meg a teljes választ, csak annak az első 25 sorát. A számunkra fontos információk egyébként az első 10 sorban benne vannak.
A válasz fejléce általában a következőképpen épül fel:
- HTTP/1.1: A HTTP protokoll típusa.
- Server: a Web-szerver nevét, verziószámát, esetenként a telepített operációs rendszer és egyéb programok típusát kapjuk vissza.
- Content-Location: annak az URL-nek az elérési útvonala, amelyet vizsgálunk.
- Date: az adott Web-szerver rendszerdátuma és rendszerideje.
- Content-Type: az adott webhely tartalmának típusa, pl. szöveges, HTML, valamint a használt kódkészlet fajtája, pl. ISO.
- Accept-Ranges: a kommunikáció milyen típusú adatokkal történik, pl. byte-okkal.
- Last-Modified: az adott weboldal utolsó módosításának időpontja.
- ETag: azonosítószám, a kommunikáció során képzett csomagoknál van szerepe.
- Content-Length: az elérési útvonalon található weblap tartalmának hossza.
Meg kell jegyezni, hogy az egyes Web-szerverek által nyújtott válaszok a fentiektől eltérhetnek.
Amennyiben a vizsgált URL nem létezik, akkor arról egy hibaüzenet értesít bennünket.