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