Ovládání utility HTTPER
je řízeno parametry příkazového řádku v této syntaxi:
HTTPER /role /Timeout=x
IP_addr:port Request Response
- /role
- V první řadě je třeba určit, zda má HTTPER vystupovat
v roli klienta či serveru. K tomu slouží parametr /C neboli
/Client, případně /S neboli /Server.
Role klienta je výchozí, /C tedy není třeba uvádět.
- /Timeout=
- Tento nepovinný parametr umožňuje stanovit dobu
v sekundách, po které se běh programu zruší, i když ještě nedošlo
k ukončení komunikace. Např. pětiminutové čekání lze zadat jako
/Timeout=300s, /T:300, -t300.
Timeout=0 znamená neomezené čekání. Pokud parametr vynecháme,
čeká se implicitně 2 minuty v roli klienta nebo
10 minut v roli serveru. I před vypršením této doby
lze HTTPER kdykoli předčasně ukončit pomocí Ctrl-Break.
- IP_addr
- Povinným parametrem je IP adresa. HTTPER
nepřevádí doménové adresy na číselné, je tedy nezbytné vždy zadat
čtyři čísla 0-255 oddělená tečkou. Bezprostředně za IP adresou může
následovat číslo TCP portu oddělené dvojtečkou. Při vynechání se
použije defaultní HTTP port :80.
V případě klienta představuje zadaná IP adresa určení serveru,
ke kterému se má připojit. V případě role serveru je to adresa
rozhraní, na kterém má server odpovídat na HTTP požadavky, zpravidla
se zde zadává univerzální adresa 0.0.0.0, která přikazuje odpovídat
na požadavky všech klientů.
- Request
- V případě role klienta představuje
Request název souboru obsahujícího předem připravenou žádost
klienta.
Pokud HTTPER plní roli serveru, znamená Request název
souboru, do něhož bude uložen přijatý požadavek klienta. Pokud soubor
již existoval, bude přepsán.
- Response
- V případě klienta představuje Response
název souboru, do něhož bude uložena odpověď přijatá od serveru.
Je-li HTTPER spuštěn jako server, měl by jako Response
být uveden název existujícího souboru, jež pak bude odeslán klientovi.
Jak už bylo uvedeno výše, Request i Response jsou
tvořeny hlavičkou a datovým obsahem. HTTPER umožňuje oddělenou manipulaci
s těmito složkami, pokud budou místo názvu jednoho souboru zadány dva soubory
oddělené znaménkem "+". Před i za znaménkem plus musí být
aspoň jedna mezera, např.
HTTPER /C 200.100.50.25 Request.TXT ResponseHeader.TXT + Content.html
Odpověď od serveru bude rozdělena, hlavička se uloží do souboru
ResponseHeader.TXT a datový obsah do Content.html.
Jména souborů mohou být uváděna včetně plné cesty, např.
"D:\PATH\SOUBOR.TXT", v UNC tvaru, např.
\\SERVER\SHARE\PATH\FILE.HTM, případně jako jméno zařízení,
např. NULL, CON, LPT1.. Obsahuje-li název mezeru, musí být
uzavřen v uvozovkách.
Pokud v roli klienta vynecháme specifikaci souboru Response,
bude odpověď směrována na standardní systémový výstup, tzn. uvidíme ji
na monitoru. V roli serveru bude odpověď vyžadována na systémovém vstupu,
můžeme ji tedy zapsat přímo z klávesnice.
Nebude-li na příkazovém řádku uvedeno Request ani
Response, jsou oba soubory směrovány na konzolu.
V roli klienta pak zadáváme požadavek interaktivně z klávesnice a odpověď
vidíme na displeji. V roli serveru nejprve uvidíme přijatý požadavek
klienta na obrazovce a odpověď musíme zadat z klávesnice.
Na rozdíl od jiných řádkových klientů (TELNET) se požadavek odešle na server
až po jeho zkompletování (Ctrl-Z). Ani při pomalém psaní tedy nehrozí,
že protistrana "ztratí trpělivost" a již navázané TCP spojení předčasně zruší.
Na obrazovce se také mohou zobrazovat výzvy a hlášení utility
HTTPER začínající znakem #. Tyto zprávy jsou směrovány na
standardní chybový výstup, takže nedochází k jejich zamíchání
do přijatých dat ani při přesměrování výstupu HTTPER operátorem
">".
Po ukončení běhu utility lze zjistit příčinu pomocí návratové hodnoty
ERRORLEVEL:
- 0
- Normální ukončení, přenos proběhl v pořádku.
- 4
- Vzdálený partner odmítl komunikaci, např. protože neposlouchá
na zadaném TCP portu.
- 8
- Protistrana se nehlásí (neprůchodná síť, neexistující
IP adresa ap.)
- 12
- Utilita byla ukončena kvůli vypršení času stanoveného
parametrem /Timeout.
- 16
- Chyba při čtení nebo zápisu do souboru, např. přeplněný disk.
- 20
- Některý ze zadaných vstupních souborů nebyl nalezen.
- 24
- Chybný formát IP adresy nebo portu.
- 28
- Chybný formát příkazu, vypsána nápověda.
Cvičení z HTTP protokolu
Chcete-li si osvojit vlastnosti protokolu HTTP a používání utility HTTPER,
vyzkoušejte následující příklady.
Stažení webové stránky metodou GET
Jako server použijeme některý existující WWW server na intranetu nebo
Internetu. Jeho IP adresu zjistíte z doménové adresy příkazem
PING doménová_adresa
Pokud na vašem počítači běží některý WWW server (Apache,
Personal Web Server, MS IIS), můžete
použít univerzální místní IP adresu 127.0.0.1 (localhost).
Jako klienta použijeme HTTPER.EXE. Na výzvu # Enter Request
zadejte požadavek GET:
Častěji je autory webových sídel preferována metoda POST, kdy je
v hlavičce uvedena jen adresa zpracovávajícího skriptu a parametry jsou
odesílány v těle požadavku:
Mnohé webové servery poskytují zajímavý obsah dynamicky, na základě
zaslání formuláře. Naplánováním spouštění utility HTTPER si můžete
zajistit pravidelný přísun těchto dat, aniž by bylo nutno někam klikat
a shlížet přitom kvanta reklam.
Po odeslání odpovědi náš server skončí. Tím se liší od skutečných
WWW serverů, které musejí neustále vyřizovat velká množství
požadavků. Pokud by měla být utilita HTTPER využívána
v rámci nějakého bezobslužného přenosu informací, bude nutné
ji umístit do dávkového souboru a jakmile se ukončí, zařídit
potřebné úkony (inkrementace počitadla, příprava dalšího souboru apod.)
a pak ji znovu nastartovat.