Prosty klient usługi sieciowej napisany jako skrypt Java Script, na podstawie którego utworzono aplikację HTA (HTML Application), komunikającą się z Web Service'm.
Poprzednim razem w artykule "Web Service" przybliżyłem ideę usług sieciowych, realizujących określone przez programistę funkcjonalności. W przykładach używaliśmy usługi TempConvert, udostępnionej pod adresem http://www.w3schools.com/webservices/tempconvert.asmx, umożliwiającej konwersję temperatur pomiędzy skalami Celsjusza i Fahrenheita.
Tym razem napiszemy prosty skrypt JS (Java Script), umożliwiający skorzystanie z przykładowego Web Servica i tym samym pozwoli na konwersję temperatury w skali Celsjusza na wartość temperatury w skali Fahrenheita. Skrypt taki może być przydatny do szybkiego testowania usług sieciowych, ponieważ napisanie skryptu to raptem kilka minut i 10 linii kodu JavaScript.
Następnie na podstawie skryptu JS, utworzona zostanie aplikacja HTA (HTML Application), wyświetlająca użytkownikowi formularz, w którym może wpisać wartość temperatury, którą chce skonwertować. Dodatkowo w aplikacji widoczne będą dwa dokumenty XML: pierwszy z danymi wejściowymi, wysyłany do Web Service'a, drugi zwrócony przez usługę z wynikiem konwersji.
Skrypt JS
Oto skrypt JS, realizujący komunikację z WebService'm:
var hxml=new ActiveXObject('Microsoft.XMLHTTP'); var txml=new ActiveXObject('MSXML2.DOMDocument'); txml.async=false; txml.load('xmldoc.xml'); hxml.open('POST','http://www.w3schools.com/webservices/tempconvert.asmx',false); hxml.send(txml); var tempCelsius=txml.documentElement.lastChild.firstChild.firstChild.text; var tempFahrenheit=hxml.responseXML.documentElement.lastChild.firstChild.firstChild.text; WScript.Echo(hxml.responseXML.xml); WScript.Echo(tempCelsius+' stopni Celsjusza to '+tempFahrenheit+' stopni Fahrenheita.');
Kilka słów, co w skrypcie:
Linia nr 7 - inicjalizacja żądania HTTP (obiektem XMLHTTPRequest) ze wskazaniem metody (POST) oraz adresu URL (http://www.w3schools.com/webservices/tempconvert.asmx).
Linia nr 10 - wyciągnięcie (właściwościami DOM) z dokumentu wejściowego wartości temperatury w skali Celsjusza.
Linia nr 11 - wyciągnięcie wyniku (także przy pomocy DOM) ze zwróconego przez usługę dokumentu.
Linia nr 13 - wyświetlenie dokumentu wyjściowego, zawierającego wynik konwersji.
Linia nr 14 - wyświetlenie ładnego komunikatu z wynikiem konwersji (zawiera wartości temperatur uzyskane w linii 10 i 11).
Jako, że tego typu szybkie skrypty używane są do testowania działania usługi sieciowej, często też jest potrzeba podejrzenia wszystkich nagłówków HTTP, towarzyszących połączeniu z Web Service'm. Nagłówki te można wyświetlić dodając do skryptu linię:
WScript.Echo(hxml.getAllResponseHeaders());
HTA (HTML Application)
Gdy już mamy skrypt i wiemy jak przy pomocy JS zmusić Web Service do pracy, spróbujemy napisać aplikację HTA, która też będzie potrafiła pobrać wynik konwersji z usługi oraz udostępni uzytkownikowi formularz, w którym może on wpisać wartość temperatury, która ma zostać przeliczona na skalę Fahrenheita. Poza samym wynikiem program pokazuje dokument XML wysyłany do usługi oraz dokument, który usługa zwróciła.
HTA to tak naprawdę dynamiczny HTML (połączenie HTML, CSS i JavaScript) uruchamiany na trochę większych uprawnieniach. Jeśli chodzi o zabawy z HTA, to kilka uwag jest koniecznych:
- HTA jest wynalazkiem Microsoftu, więc uruchamianie aplikacji bezpośrednio z innych przeglądarek niż IE spowoduje, że aplikacja nie uruchomi się lecz pokazane zostanie jedynie jej źródło.
- W naszym testowym HTA wpisane są na sztywno ścieżki dyskowe (zapisujące dokumenty w miejscu, gdzie znajduje się HTA), w związku z czym uruchomienie aplikacji z przeglądarki bez uprzedniego pobrania jej na dysk lokalny, spowoduje błędy w działaniu.
Krótko mówiąc, żeby zobaczyć HTA w działaniu, należy pobrać na dysk lokalny dwa pliki, które należy na dysku zapisać - oba w tym samym miejscu:
Po pobraniu, uruchomieniu (poprzez dwukrotne kliknięcie w plik TempConvert.hta), wpisaniu wartości temperatury, która ma zostać przeliczona i kliknięciu w klawisz Oblicz, powinniśmy zobaczyć przeliczoną na skalę Fahrenheita wartość temperatury, a poniżej dokumenty wejściowy i wyjściowy usługi.
Do pobrania
W artykule użwane były pliki, które można pobrać przy pomocy poniższych linków:
- Skrypt JS, korzystający z testowego Web Service'a.
- Aplikacja HTA, korzystająca z testowego Web Service'a.
- Dokument XML, uzywany przez HTA do komunikacji z usługą.










