Seriál - 16. díl
Ovládací prvky pro síťovou komunikaci - 2. část
16. Ovládací prvky pro síťovou komunikaci
16.2 WebBrowser
16.3 Inet
16. Ovládací prvky pro síťovou komunikaci
V dnešní části si probereme další prvky sloužící k síťové komunikaci. Přesněji půjde o
prvek WebBrowser a Inet. K čemu slouží se dozvíte v jednotlivých kapitolách.
16.2 WebBrowser
WebBrowser je prvek, který slouží hlavně k práci s HTML dokumenty. Umí také
zobrazovat složky na lokálním počítači nebo na síti. Umí toho velmi mnoho, proto
si probereme pouze některé základní operace. Do projektu jej zařadíte zatržením položky
Microsoft Internet Control v dialogu Components z menu
Project -> Components.
Kterou stránku chcete zobrazit určíte metodou Navigate nebo Navigate2 .
Je úplně jedno, kterou z nich použijete, Navigate2 má význam pouze v jazyku C++.
První parametr metody je URL stránky. Druhý může být kombinace hodnot, určujících
jak se stránka otevře:
1 |
otevření stránky v novém okně |
2 |
nepřidá stránku do historie |
4 |
nečte data z diskové vyrovnávací paměti (cache) |
8 |
nezapíše zobrazenou stránku do diskové vyrovnávací paměti (cache) |
Třetí parametr určuje název rámce, ve kterém se stránka otevře. Metoda má ještě dva další
parametry, které by však bylo zbytečné probírat v tomto krátkém přehledu.
'Otevře soubor C:\serial.htm
WebBrowser1.Navigate "file://C:\serial.htm"
'Stránku www.seznam.cz otevře v novém okně
WebBrowser1.Navigate "http://www.seznam.cz", 1
'Otevře složku D:\DATA v novém okně a nepřidá ji do historie
WebBrowser1.Navigate "file://D:\DATA", 3
Pro rychlejší navigaci slouží několik metod. GoBack se posune o jednu
stránku v historii zpět, GoForward o jednu stránku dopředu. Chcete-li
zobrazit domovskou stránku, můžete pomocí metody GoHome . Poslední
metoda pro navigaci je GoSearch , která zobrazí vyhledávací stránku
(nastavuje se v dialogu Internet v ovládacích panelech nebo přímo z Internet Exploreru).
Jak už bylo řečeno na začátku, prvek WebBrowser má ještě mnoho dalších možností, ale
my si je zde probírat nebudeme. Spoustu informací najdete v MSDN. Dejte si však pozor
na to, k čemu je nápověda vlastně napsána. Stejná nápověda je totiž pro prvek
WebBrowser a pro objekt InternetExplorer, pouze dole je u každého tématu
napsáno, zda je to pro WebBrowser, InternetExplorer, nebo pro oba.
Zpět na obsah
16.3 Inet
Prvek Inet poskytuje připojení po síti pomocí protokolů FTP, HTTP a HTTPS. Pomocí FTP umožňuje
připojení k FTP serveru a na něm provádění základních FTP příkazů (stáhnutí nebo uložení souboru atd.).
Pomocí HTTP a HTTPS umožňuje připojení k WWW serveru a stáhnutí nějakého dokumentu. Ukážeme si oba dva případy.
Do projektu jej zařadíte zatržením položky Microsoft Internet Transfer Control v dialogu Components
z menu Project -> Components.
Synchronní a asynchronní přenos
Prvek Inet umožňuje přenos souborů synchronně i asynchronně. Synchronní přenos
se provádí metodou OpenURL . Jako parametr jí zadáte soubor, který chcete stáhnout a metoda vám
vrátí požadovaná data (pomocí druhého parametru určujete typ stahovaných dat). Tzn. dokud nejsou data
vrácena, program dále nepokračuje.
Zobrazení stránky www.seznam.cz (HTML kód).
Text1.Text = Inet1.OpenURL("http://www.seznam.cz")
Zobrazení textového souboru z FTP serveru.
Text1.Text = Inet.OpenURL("ftp://ftp.seznam.cz/soubor.txt")
Uložení binárního souboru na lokální disk.
Dim b() As Byte, iFile As Integer
b() = Inet1.OpenURL("ftp://195.113.105.136/listek.doc", icByteArray)
iFile = FreeFile
Open "C:\listek.doc" For Binary As #iFile
Put #iFile, , b()
Close #iFile
Asynchronní přenos funguje trochu jinak. Pomocí metody
Execute zadáte, co chcete provádět, např. FTP příkaz, přičemž program
pokračuje dále (seznam podporovaných FTP a HTTP příkazů včetně jejich popisu najdete v MSDN).
Při zaslání všech dat požadovaných metodou Execute
je vyvolána událost StateChanged , ve které přijatá data zpracujete.
Zobrazení seznamu souborů kořenového adresáře serveru ftp.seznam.cz.
Private Sub Command1_Click()
Inet1.Execute "ftp://ftp.seznam.cz", "DIR"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant
Select Case State
Case icResponseCompleted
vtData = Inet1.GetChunk(1024, icString)
Do While LenB(vtData) > 0
Text1.Text = Text1.Text & vtData
vtData = Inet1.GetChunk(1024, icString)
Loop
End Select
End Sub
Pomocí Execute je spuštěn FTP příkaz DIR. V události StateChanged je nejdříve
otestováno, zda jde o zprávu, na kterou čekáme (icResponseCompleted ), protože prvek se nachází
během komunikace v různých stavech a o všech informuje tato událost. Všechna data jsou ve vyrovnávací paměti,
pomocí metody GetChunk je možné je získat. Opět máte možnost určit, o jaká data se jedná, možnosti
jsou icString a icByteArray .
Uložení souboru na FTP server nebo stáhnutí souboru z FTP serveru na lokální počítač je jednodušší.
'Uloží soubor z lokálního PC na FTP server
Inet1.Execute "ftp://ftp.seznam.cz", "PUT C:\soubor.txt soubor.txt"
'Uloží soubor z FTP serveru na lokální PC
Inet1.Execute "ftp://ftp.seznam.cz", "GET soubor.txt C:\soubor.txt"
Nastavení připojení
Prvek umožňuje spoustu různých kombinací připojení. Jedno z možných nastavení je protokol. Nastavuje
se vlastností Protocol . Díky tomu, že prvek umožňuje připojení přes FTP
nebo HTTP se snaží sám rozeznat, který protokol hodláte použít. Nejlépší je však nespoléhat se na
takové vlastnosti a nastavit si raději vše sám. Jedna možnost je použití této vlastnosti
a druhá zadání názvu protokolu přímo do URL adresy tak, jak jsme to již použili ve výše uvedených příkladech.
'FTP protokol
Inet1.Protocol = icFTP
'HTTP protokol
Inet1.Protocol = icHTTP
Další možností je typ připojení. Vlastnost, která se o něj stará, je AccessType .
Vybrat si můžete buď přímé připojení (icDirect ) nebo připojení přes proxy server
(icNamedProxy ). V případě, že se chcete připojit přes proxy server, musíte také zadat
jeho název do vlastnosti Proxy . Existuje ještě třetí možnost, icUseDefault ,
která je ve většině případů nejvýhodnější. Zjistí nastavení existujícího připojení z registru a
podle toho se pak snaží připojit.
'proxy server
Inet1.AccessType = icNamedProxy
Inet1.Proxy = "NasHlavniProxyServer"
'přímé připojení
Inet1.AccessType = icDirect
Spousta serverů (nebo spíše většina) umožňuje anonymní připojení. To provádí prvek automaticky. Chcete-li
se však přihlásit pod jiným účtem, musíte zadat také uživatelské jméno a heslo. Jak jinak
než vlastnostmi UserName a Password . V tomto případě však
nemůžete zadávat URL adresu až metodě Execute , ale musíte ji zadat do vlastnosti URL .
Pokud byste ji zadali přímo do Execute , přihlásil by vás prvek jako anonymous.
Upravíme-li kód na zobrazení souborů adresáře FTP serveru (pouze první proceduru)
na přihlášení pod uživatelským jménem a heslem, měla by vypadat takto:
Private Sub Command1_Click()
Inet1.Protocol = icFTP
Inet1.URL = "ftp.seznam.cz"
Inet1.UserName = "test"
Inet1.Password = "heslo"
Inet1.Execute , "DIR"
End Sub
Zpět na obsah
|