Autor: Adam Bukowiński
Data publikacji: 01.08.2003, 10:24 | Ostatnia modyfikacja: 19.09.2006, 14:13
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?
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 serwer posiada już obsługę odpowiedniej technologii server-side - jeśli nie to odsyłam do odpowiednich artykułów na WebCity.pl lub na forum.
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.
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 | |
| 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 trzyliterowych 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.
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 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.
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 co najmniej 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ące 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:
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ć definicję typu MIME i typu dokumentu.
W PHP:
<?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:
<?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.
Odpowiednio konfigurując nasz domowy serwer WWW poprzez implementację obsługi protokołu WAP oraz obsługę 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 WW i skrypty PHP w systemach Windows i uniksowych.
Waszym zdaniem:
Nikt jeszcze nie dodał swojego komentarza. Możesz być pierwszy!