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.