Webcity.pl


  Generowanie dokument...

  Piszemy klienta pocz...

  Dokumentowanie kodu ...

  Pierwsze kroki w świ...

  Bazy danych SQLite w...

 

 02.02.06 - [new] E-video - artykuł

 30.01.06 - [update] Artykuł o sesjach

 18.12.05 - [update] PDO - artykuł

 19.08.05 - [new+upd] Aktualizacja materia...

 26.04.05 - [update] Nowy artykuł



  Pomocy WML
[php]Sesje nie działają, ...
[actionscript 2.0] [flash...
Problem z talicami w php
[ocena] llll.pl darmowe a...
Kamera na stronie interne...
Kamera na stronie interne...
[xml] Jak wyciągnąć dane
Wizualizacja w JS - POMOC
Web Developer - stała / f...

... i wiele innych wątków na forum ›

Partnerzy
› allRSS.info - katalog zasobów RSS
› iloveflyer.org - webdesign
› webserv.pl - serverpack
› skryptoteka.pl - mnóstwo skryptów
› vel.pl - hosting
› TelePraca.net - pracuj swobodnie
› PHP Solutions - magazyn PHP
› HELION - wydawnictwo informatyczne

Ksišżka dnia

CityMag
Wpisz swój e-mail, aby zaprenumerować nasz Magazyn, który zawiera najnowsze informacje ze świata i najciekawsze teksty.
 

Szukasz czegoś?
Nasza wyszukiwarka znajdzie wszystko, czego szukasz.
 

Szukanie zawansowane


  Reklama
  Redakcja
  Hosting
  Kanał

© WebCity.pl Team
 
 
  Forum Forum
Kursy Kursy
Porady Porady
Recenzje Recenzje
Newsy Newsy
Katalog stron WWW Katalog
Skrypty PHP Skrypty
Download Oferty i praca
Artykuły:
 Teoria
 Praktyka
 Promocja
 Inne
 

 Webcity.pl |

Serwer WAP i dynamicznie generowane dokumenty WML

Autor: BuKoX
Pojawienie się protokołu WAP (Wireless Application Protocol) oraz telefonów komórkowych z jego obsługą stworzyło wizję nieograniczonego dostępu do dowolnych informacji z internetu. Mimo dość małego wyświetlacza telefon przy odrobinie chęci może stać w pełni mobilnym mini komputerkiem. W artykule tym chcę opisać krok po kroku skonfigurowanie serwera stron www tak aby mógł służyć jako WAP serwer. Dodatkowo rozszerzymy możliwości statycznego języka WML o skrypty wykonywane po stronie serwera.

Co będzie potrzebne?

* serwer www - np. Apache, XITAMI, IIS
* obsługa skryptów server-side np.: PHP, JSP, ASP (jako moduł serwera bądź CGI)
* opcjonalnie można użyć własnej bramki WAP lecz niektórzy operatorzy blokują inne bramki niż te które oni sami udostępniają więc nie widzę sensu stosowania własnych tym bardziej, że bramki operatorów zazwyczaj są szybkie i stabilne (przykładem jest bramka WAP PlusGSM)
* oprogramowanie do tworzenia i testowania stron (opisane w pkt. 2)
* oczywiście najważniejsze - telefon komórkowy z obsługa protokołu WAP (w wersji 1.0, 1.1 albo 1.2)


1. Konfiguracja serwera WWW

Nasz serwer www musi posiadać obsługę dokumentów WML aby móc poprawnie wyświetlać strony utworzone w tym języku. W tym celu należy sprawdzić czy odpowiednie wpisy definiujące typy MIME znajdują się w plikach konfiguracyjnych. Zakładam, że nasz serwer www posiada już obsługę odpowiedniej technologii server-side - jeśli nie to odsyłam do odpowiednich artykułów na WebCity.pl lub na forum


   Serwer Apache

W większości nowszych dystrybucji obsługa jest domyślnie zaimplementowana. Można to łatwo sprawdzić otwierając plik conf/mime.types i poszukać w nim następujących wpisów:

text/vnd.wap.wml              wml   # dokumenty WML
text/vnd.wap.wmlscript        wmls  # skrypty WML Script
image/vnd.wap.wbmp            wbmp  # obrazki w formacie WBMP application/vnd.wap.wmlc      wmlc  # skompilowane dokumenty WML
application/vnd.wap.wmlscript wmlsc # skompilowane skrypty WML Script

W pierwszej kolumnie znajdują się definicje typów mime obsługiwanych przez serwer wiążących je z odpowiednimi rozszerzeniami (kolumna 2). Kolumna 3 jest moim komentarzem. Jeśli wpisów tych brakuje należy je dopisać w pliku conf/mime.types dowolnym edytorem tekstowym. Po restarcie serwera jeżeli nie wystąpiły żadne błędy serwer Apache jest gotowy do pracy jako WAP serwer.


   Serwer Xitami

Aby wejść do opcji konfiguracyjnych należy kliknąć na przycisk Setup bądź po poprawnym skonfigurowaniu serwera należy wejść na stronę administracyjną znajdującą się pod adresem http://127.0.0.1/admin. Po wpisaniu hasła należy wybrać opcję Configuration/Mime gdzie znajduje definicja typów mime wraz z powiązanymi rozszerzeniami. Domyślnie pola są puste więc należy je wypełnić następująco:

File extension | MIME type
-------------- + -----------------------
wml            | text/vnd.wap.wml
wmls           | text/vnd.wap.wmlscript
wbmp           | image/vnd.wap.wbmp
wmlc           | Application/vnd.wap.wml
wmlsc          | Application/vnd.wap.wmlscript


Ewentualnie typy mime dla dwu- i trzy-literowych rozszerzeń:

File extension | MIME type
-------------- + -----------------------
ws             | text/vnd.wap.wmlscript
wsc            | Application/vnd.wap.wmlscript

Od tej pory serwer Xitami jest gotowy do pracy jako WAP serwer.


   Serwer IIS

Po uruchomieniu aplikacji Internet Service Manager należy wybrać Default Web Site Properties (Właściwości usługi WWW) a następnie zakładkę HTTP Headers i wybrać File Types. Pojawi się okno File Types w którym wprowadzamy za pomocą przycisku New Type wszystkie typy mime podając jako Associated Extension - rozszerzenie pliku a jako Content Type (MIME) - typ MIME. Zarówno rozszerzenia i typy są identyczne jak w przypadku poprzednich serwerów. Od tej pory serwer IIS może pełnić rolę serwera WAP.


2. Podstawy języka WML

WML pochodzi od angielskiej nazwy Wireless Markup Language. Jest to prosty język znaczników wykorzystywany przez urządzenia oparte o protokół WAP. WML jest tym dla WAP czym HTML dla WWW. WML został napisany w XML'u stąd także składnia oparta jest właśnie na tym języku i nieco różni się od HTML'a. Główne różnice w składni polegają na innym zamykaniu znaczników i dokładności pisowni. O ile HTML jest dość "tolerancyjnym" językiem i pozwala na wiele błędów mimo wszystko wyświetlając stronę mniej lub bardziej poprawnie o tyle drobny błąd w WML'u spowoduje wyświetlenie na ekranie telefonu komórkowego błędu "Cannot dispaly malformed content". Dlatego tworząc strony w WML'u dobrze jest zaopatrzyć się w dobry walidator. Jednym z najlepszych (wniosek poparty własnymi doświadczeniami) jest Nokia Mobile Toolkit 4.0 - można go ściągnąć za darmo po zarejestrowaniu się na stronie http://www.nokia.com. Zawiera on kilka narzędzi takich jak: Nokia Mobile Browser Simulator (przeglądarka internetowa WAP), Nokia Mobile Internet Toolkit (edytor WML'a wraz z walidatorem) oraz Nokia Mobile Gateway Simulator (bramka WAP). Oczywiście najbardziej użyteczny dla nas będzie sam edytor z walidatorem. Nokia Toolkit wymaga środowiska uruchomieniowego JRE (Java Runtime Envoiroment) w wersji conajmniej 1.2.2 (najnowsze pakiety można znaleźć na stronie http://wwws.sun.com/software/download/technologies.html bądź poszukać na stronie nokii).

Język WML składa się z deków (ang. deck). Dek zaczyna znacznikiem <wml> a kończy </wml> i stanowi jakby stronę główną serwisu WAP (1 plik zawiera 1 dek). Każdy dek zawiera tzw. karty (ang. cards) będą jakby podstronami serwisu. Każda karta zaczyna się znacznikiem <card id="nazwa_karty"> a kończy </card>. Karty zawarte są w deku czyli pomiędzy znacznikami <wml> i </wml>. Jednym z najważniejszych elementów kazdego deka w WML'u stanowi definicja typu dokumentu. Powinna ona wyglądać następująco:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM/DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

Lista znaczników obsługiwanych przez WML jest znacznie uboższa od HTML'a i najważniejsze z nich to: <P>, <BR/>, <EM>, <STRONG>, <I>, <B>, <U>, <BIG>, <SMALL>, <TABLE>, <IMG> (wyświetla obrazki w specjalnym formacie WBMP), <A>, <ANCHOR>, <TIMER> (wykonanie zadania po określonym czasie wyświetlania karty) i inne specyficzne znaczniki dla języka WML np. <DO ...> definiujący opcje dotyczące konkretnej karty które pojawią się na ekranie telefonu oraz <TEMPLATE> czyli część wspólna dla wszystkich kart w deku. Oprócz statycznego WML'a możemy stosować WML Script będący językiem skryptowym działającym po stronie klienta (czyli telefonu :-)). Jest on odpowiednikiem JavaScript'u w HMTL'u. Skrypty umieszczamy w osobnym pliku z rozszerzeniem wmls.

Przykład najprostszego deka napisanego w WML'u:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Pierwsza karta">
<p>
Hello World!!!
</p>
</card>
</wml>


Więcej informacji dotyczących technologii WAP i języka WML można znaleźć na stronach:

* www.pckurier.pl/webmaster/poradniki/wml/
* webmaster.pckurier.pl/2000/luty/domalewski/wap.html
* www.mobile.net.pl/wap_faq/
* www.cnl.tonet.pl/wap.htm
* www.wapforum.org
* www.wmlscript.com
* www.wirelessdevnet.com


3. Stosowanie skryptów server-side w technologii WAP.

Oprócz języka skryptowego działającego po stronie klienta WMLScript mamy możliwość stosowania skryptów server-side czyli działających po stronie serwera np. PHP, ASP, JSP. Jak już napisałem w pkt 1 zakładam że nasz serwer posiada już skonfigurowaną obsługę odpowiedniej technologii server-side. Tak więc aby móc stosować skrypty po stronie serwera w dokumentach wml wystarczy plikom nadać odpowiednie dla danej technologii rozszerzenie (.php, .asp, .jsp) a na początku każdego pliku napisać definicje typu MIME i typu dokumentu:

w PHP:
<?
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
?>

w ASP:
<%
Response.ConentType="text/vnd.wap.wml"
Response.write("<?xml version=""1.0""?>")
Response.write("<!DOCTYPE wml PUBLIC ""-//WAPFORUM//DTD WML 1.1//EN"" ""http://www.wapforum.org/DTD/wml_1.1.xml"">")
%>

w JSP:
<%@ page contentType="text/vnd.wap.wml" %>
<%
out.println("<?xml version=\"1.0\"?>");
out.println("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">");
%>

Przykład poprzedniego dokumentu WML generowanego przez PHP:

<?
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
echo "<wml>\n";
echo "<card title=\"Pierwsza karta\">";
echo "<p>\n";
echo "Hello World!!!\n";
echo "</p>\n";
echo "</card>\n";
echo "</wml>";
?>

Wykorzystując skrypty server-side generujące dokumenty WML mamy dostęp do wszystkich możliwości tych technologii takich jak dostęp do baz danych, obsługa wielu różnych protokołów sieciowych czy obsługa plików.


4. Podsumowanie

Odpowiednio konfigurując nasz domowy serwer www poprzez implementację obsługi protokołu WAP oraz obsługi skryptów działających po stronie serwera tworzymy potężny serwer WAP. Łącząc się z nim poprzez telefon komórkowy mamy możliwości zdalnej obsługi naszego komputera praktycznie niezależnie od systemu operacyjnego co zamierzam opisać w następnym artykule. Dość nowatorskie i eksperymentalne rozwiązanie (nieco podobne do telnetu) oparte będzie o serwer www i skrypty php w systemach windows i uniksowych.

Powrót