Klient webovej služby rozvrhu FM: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Odstránený obsah stránky)
Riadok 1: Riadok 1:
 +
=Klient webovej služby rozvrhu fakulty=
 +
==Možnosti klientov webových služieb==
 +
Klientom služby môže byť akákoľvek aplikácia, ktorá si dokáže službu vyhľadať a komunikovať s ňou pomocou SOAP správ. Vďaka tomu, že služba a klient komunikujú pomocou SOAP správ, resp. textových správ, nie je nutné, aby klient a služba boli napísaný v rovnakom programovacom jazyku, alebo fungovali na rovnakej hardvérovej platforme. Je len na programátorovi klientskej aplikácie, aký programovací jazyk si zvolí.
  
 +
Voľba programovacieho jazyka závisí od schopností a vedomostí programátora a účelu aplikácie, napríklad pre mobilný telefón je vhodná voľba J2ME. Ak chceme vytvoriť aplikáciu pre PC, tak je vhodné použiť napríklad C# alebo Javu. Ak klientom majú byť webové stránky, je možností oveľa viac, napríklad JSP (Java Server Pages), ASP, JavaScript alebo PHP.
 +
 +
My sme si zvolili jazyk PHP, pretože sa jedná o rozšírený a robustný programovací jazyk a spustiť PHP stránky na webovom servery nie je náročné.
 +
 +
==PHP==
 +
Klient služby je napísaný v jazyku PHP. PHP (skratka pre Hypertext Preprocesor) je skriptovací jazyk zabudovaný na strane servera. Kód PHP je umiestnený vo vnútri HTML kódu a umožňuje mu dynamické generovanie kódu. PHP jednoducho pracuje s databázou, umožňuje pracovať so SOAP správami a je určený pre prácu na webe, je  platformovo nezávislý a open-source. Preto sme ho zvolili na vytvorenie klienta webovej služby rozvrhu fakulty. Keďže táto práca nie je zameraná na jazyk PHP, budú v tejto kapitole ukázané len tie časti kódu, ktoré pracujú priamo s webovou službou.
 +
 +
Klienta teda budú predstavovať stránky napísané v jazyku PHP a HTML. Hlavnou stránkou bude index.php, na ktorej sa bude nachádzať formulár pre vloženie informácii, ktoré chceme v rozvrhu vyhľadať a následne sa na tejto stránke zobrazí aj rozvrh vo forme tabuľky.
 +
 +
Druhá stránka admin.php, bude zabezpečovať administráciu rozvrhu, v tomto prípade aktualizáciu rozvrhu a možnosť pridať alebo ubrať administrátora rozvrhu.
 +
 +
==Popis PHP kódu==
 +
Aby klient dokázal komunikovať s webovou službou, musí poznať metódy webovej služby, ich umiestnenie a spôsob ako s nimi komunikovať. Presne toto popisuje WSDL dokument. Na spracovanie WSDL dokumentu v PHP a vytvorenie správ SOAP použijeme sadu PHP tried, ktorá je voľne šíriteľná na internete pod názvom NuSOAP Toolkit for PHP (bližšie informácie na adrese http://www.scottnichol.com/nusoapintro.htm).
 +
 +
Predtým ako chceme komunikovať s webovou službou, je nutné si na stránku importovať triedy a metódy z projektu NuSOAP.
 +
require_once('lib/nusoap.php');
 +
 +
Keď máme zahrnuté triedy a metódy z tohto projektu, vytvoríme si premennú $client, do ktorej uložíme objekt  nusoap_client, ktorého parametrom je adresa, na ktorej sa nachádza WSDL dokument.
 +
<source lang="php">
 +
$client = new nusoap_client('http://195.80.166.202:6060/TomcatSluzba/TomcatSluzbaService?wsdl', 'wsdl');
 +
</source>
 +
Keď máme vytvorenú premennú, v ktorej je uložený popis webovej služby, stačí nám len zavolať metódy webovej služby, vložiť požadované parametre a dostaneme požadovanú odpoveď. Ako ukážka poslúži úryvok kódu,  ktorý vytvára zoznam krúžkov vo formulári.
 +
<source lang="php">
 +
<?php
 +
$odosli = array ('polozka' => 'kruzok');
 +
$pom = $client->call('vratPolozky', $odosli);
 +
$kruzok = explode(",",$pom);
 +
        array_unshift($kruzok,"");
 +
echo selectList($kruzok, "kruzok");
 +
?> 
 +
</source>
 +
 +
Premenná $odosli predstavuje pole, kde ukladáme pod referenciu polozka hodnotu kruzok. Keď si pozrieme popis metódy webovej služby getPolozka(String polozka) vidíme, že jej parameter sa volá polozka. Preto je nutné aj v tomto poli vytvoriť referenciu s takým názvom. Hodnota kruzok predstavuje reťazec s názvom poľa v databáze, ktoré chceme vypísať v zozname.
 +
 +
Teraz si ukážeme najdôležitejšiu časť klienta a to je časť kódu, kedy voláme metódu webovej služby vratRozvrh. Ako bolo vyššie uvedené, je treba si vytvoriť pole, kde budú referencie mať rovnaký názov ako parametre metódy.
 +
 +
Najprv si zvolíme aký chceme výstup webovej služby.
 +
<source lang="php">
 +
if ($_POST['format'] == "XML")
 +
$format = '1';
 +
else
 +
$format = '2';
 +
</source>  
 +
 +
Potom si načítame parametre, ktoré sme si poslali metódou POST. Následne všetky tieto parametre vložíme do jedného reťazca, v ktorom budú parametre oddelené výkričníkom. Tento proces sa nazýva serializácia dát.
 +
<source lang="php">
 +
$hladane = testuj($_POST['forma']);
 +
$hladaj = array ( testuj($_POST['den']),
 +
  "null",
 +
  testuj($_POST['ucitelia']),
 +
  "null",
 +
  testuj($_POST['rocnik']),
 +
  testuj($_POST['odbor']),
 +
  "null",
 +
  testuj($_POST['forma']),
 +
  testuj($_POST['kruzok']),
 +
  testuj($_POST['predmet']),
 +
  testuj($_POST['miestnost']),
 +
  testuj($_POST['druh']),
 +
  "null");
 +
$hladaj = implode ("!", $hladaj);
 +
 +
$param =  array('hladane' => $hladaj,
 +
'typSuboru' => $format);
 +
 +
if ($format == '0')
 +
$result = null;
 +
else
 +
    $result = $client->call('vratRozvrh', $param);
 +
 +
/* Teraz si výsledok vypíšeme, ak format=2 výpis je HTML stránka, preto          ju netreba nijak upravovať. Ak format=1 výpis je XML dokument a aby sa v prehliadači zobrazil správne, je nutné hranaté zátvorky prekonvertovať na HTML syntax */
 +
if ($format == '2')
 +
    print_r ($result);
 +
if ($format == '1') {
 +
$result = str_replace ("<","&lt;",$result);
 +
$result = str_replace (">","&gt;",$result);
 +
print_r ($result);}
 +
</source>
 +
 +
==Spustenie klienta==
 +
Klientom webovej služby sú webové stránky napísané v jazyku PHP a HTML, to znamená, že je nutné ich spustiť na webovom serveri podporujúcom PHP. Ako najvhodnejší variant sa javí WAMP server, ktorí predstavuje inštaláciu troch balíkov a to webového servera Apache, PHP a databázy MySQL. Momentálne je dostupná verzia WampServer 2.0 na adrese http://www.wampserver.com/en/download.php , ktorá má v sebe:
 +
*Apache v.2.2.8
 +
*PHP v.5.2.6
 +
*MySQL v.5.0.51b
 +
 +
V tomto prípade je webový server umiestnený na rovnakom počítači ako aj aplikačný server. Preto sa klient nachádza na adrese:
 +
http://195.80.166.202:3306/Rozvrh/
 +
 +
Bolo nutné použiť iný port, pretože tento počítač je umiestnený na firemnej sieti a port 80  je už využívaný.
 +
[[Súbor:client.png|center|frame|Obr. 14 - Screenshot klienta webovej služby napísaný v PHP]]

Verzia zo dňa a času 12:44, 27. február 2010

Klient webovej služby rozvrhu fakulty

Možnosti klientov webových služieb

Klientom služby môže byť akákoľvek aplikácia, ktorá si dokáže službu vyhľadať a komunikovať s ňou pomocou SOAP správ. Vďaka tomu, že služba a klient komunikujú pomocou SOAP správ, resp. textových správ, nie je nutné, aby klient a služba boli napísaný v rovnakom programovacom jazyku, alebo fungovali na rovnakej hardvérovej platforme. Je len na programátorovi klientskej aplikácie, aký programovací jazyk si zvolí.

Voľba programovacieho jazyka závisí od schopností a vedomostí programátora a účelu aplikácie, napríklad pre mobilný telefón je vhodná voľba J2ME. Ak chceme vytvoriť aplikáciu pre PC, tak je vhodné použiť napríklad C# alebo Javu. Ak klientom majú byť webové stránky, je možností oveľa viac, napríklad JSP (Java Server Pages), ASP, JavaScript alebo PHP.

My sme si zvolili jazyk PHP, pretože sa jedná o rozšírený a robustný programovací jazyk a spustiť PHP stránky na webovom servery nie je náročné.

PHP

Klient služby je napísaný v jazyku PHP. PHP (skratka pre Hypertext Preprocesor) je skriptovací jazyk zabudovaný na strane servera. Kód PHP je umiestnený vo vnútri HTML kódu a umožňuje mu dynamické generovanie kódu. PHP jednoducho pracuje s databázou, umožňuje pracovať so SOAP správami a je určený pre prácu na webe, je platformovo nezávislý a open-source. Preto sme ho zvolili na vytvorenie klienta webovej služby rozvrhu fakulty. Keďže táto práca nie je zameraná na jazyk PHP, budú v tejto kapitole ukázané len tie časti kódu, ktoré pracujú priamo s webovou službou.

Klienta teda budú predstavovať stránky napísané v jazyku PHP a HTML. Hlavnou stránkou bude index.php, na ktorej sa bude nachádzať formulár pre vloženie informácii, ktoré chceme v rozvrhu vyhľadať a následne sa na tejto stránke zobrazí aj rozvrh vo forme tabuľky.

Druhá stránka admin.php, bude zabezpečovať administráciu rozvrhu, v tomto prípade aktualizáciu rozvrhu a možnosť pridať alebo ubrať administrátora rozvrhu.

Popis PHP kódu

Aby klient dokázal komunikovať s webovou službou, musí poznať metódy webovej služby, ich umiestnenie a spôsob ako s nimi komunikovať. Presne toto popisuje WSDL dokument. Na spracovanie WSDL dokumentu v PHP a vytvorenie správ SOAP použijeme sadu PHP tried, ktorá je voľne šíriteľná na internete pod názvom NuSOAP Toolkit for PHP (bližšie informácie na adrese http://www.scottnichol.com/nusoapintro.htm).

Predtým ako chceme komunikovať s webovou službou, je nutné si na stránku importovať triedy a metódy z projektu NuSOAP. require_once('lib/nusoap.php');

Keď máme zahrnuté triedy a metódy z tohto projektu, vytvoríme si premennú $client, do ktorej uložíme objekt nusoap_client, ktorého parametrom je adresa, na ktorej sa nachádza WSDL dokument.

 
$client = new nusoap_client('http://195.80.166.202:6060/TomcatSluzba/TomcatSluzbaService?wsdl', 'wsdl');

Keď máme vytvorenú premennú, v ktorej je uložený popis webovej služby, stačí nám len zavolať metódy webovej služby, vložiť požadované parametre a dostaneme požadovanú odpoveď. Ako ukážka poslúži úryvok kódu, ktorý vytvára zoznam krúžkov vo formulári.

<?php
		$odosli = array ('polozka' => 'kruzok');
		$pom = $client->call('vratPolozky', $odosli);
		$kruzok = explode(",",$pom);
        array_unshift($kruzok,"");
		echo selectList($kruzok, "kruzok");		
?>

Premenná $odosli predstavuje pole, kde ukladáme pod referenciu polozka hodnotu kruzok. Keď si pozrieme popis metódy webovej služby getPolozka(String polozka) vidíme, že jej parameter sa volá polozka. Preto je nutné aj v tomto poli vytvoriť referenciu s takým názvom. Hodnota kruzok predstavuje reťazec s názvom poľa v databáze, ktoré chceme vypísať v zozname.

Teraz si ukážeme najdôležitejšiu časť klienta a to je časť kódu, kedy voláme metódu webovej služby vratRozvrh. Ako bolo vyššie uvedené, je treba si vytvoriť pole, kde budú referencie mať rovnaký názov ako parametre metódy.

Najprv si zvolíme aký chceme výstup webovej služby.

if ($_POST['format'] == "XML")
	$format = '1';
else 
	$format = '2';

Potom si načítame parametre, ktoré sme si poslali metódou POST. Následne všetky tieto parametre vložíme do jedného reťazca, v ktorom budú parametre oddelené výkričníkom. Tento proces sa nazýva serializácia dát.

$hladane = testuj($_POST['forma']);
$hladaj = array ( testuj($_POST['den']),
				  "null", 
				  testuj($_POST['ucitelia']), 
				  "null", 
				  testuj($_POST['rocnik']), 
				  testuj($_POST['odbor']), 
				  "null", 
				  testuj($_POST['forma']), 
				  testuj($_POST['kruzok']), 
				  testuj($_POST['predmet']), 
				  testuj($_POST['miestnost']), 
				  testuj($_POST['druh']), 
				  "null");
$hladaj = implode ("!", $hladaj);
	
	$param =  array('hladane' => $hladaj,
		'typSuboru' => $format);

if ($format == '0') 
	$result = null;
else
    $result = $client->call('vratRozvrh', $param);

/* Teraz si výsledok vypíšeme, ak format=2 výpis je HTML stránka, preto          ju netreba nijak upravovať. Ak format=1 výpis je XML dokument a aby sa v prehliadači zobrazil správne, je nutné hranaté zátvorky prekonvertovať na HTML syntax */
if ($format == '2')
    print_r ($result);
if ($format == '1') {
	$result = str_replace ("<","&lt;",$result);
	$result = str_replace (">","&gt;",$result);
	print_r ($result);}

Spustenie klienta

Klientom webovej služby sú webové stránky napísané v jazyku PHP a HTML, to znamená, že je nutné ich spustiť na webovom serveri podporujúcom PHP. Ako najvhodnejší variant sa javí WAMP server, ktorí predstavuje inštaláciu troch balíkov a to webového servera Apache, PHP a databázy MySQL. Momentálne je dostupná verzia WampServer 2.0 na adrese http://www.wampserver.com/en/download.php , ktorá má v sebe:

  • Apache v.2.2.8
  • PHP v.5.2.6
  • MySQL v.5.0.51b

V tomto prípade je webový server umiestnený na rovnakom počítači ako aj aplikačný server. Preto sa klient nachádza na adrese:

http://195.80.166.202:3306/Rozvrh/

Bolo nutné použiť iný port, pretože tento počítač je umiestnený na firemnej sieti a port 80 je už využívaný.

Obr. 14 - Screenshot klienta webovej služby napísaný v PHP