Artykuł przybliża ideę Web Service czyli usług sieciowych niezależnych od platformy, realizujących określoną funkcjonalność. Skupimy się na praktycznej współpracy z webservice'ami, pomijając nieistotne na tym etapie (choć ogólnie ważne) zawiłości teoretyczne.
Trochę teorii
Usługa sieciowa (z ang. web service) to w istocie aplikacja sieciowa (osadzona na serwerze www), która dzięki wyspecyfikowanemu (opisanemu i znanemu) interfejsowi wymiany danych, realizuje określoną funkcjonalność. Interfejs ten definiuje sposób, w jaki skonstruowane ma być żądanie oraz odpowiedź serwisu, ponieważ współpraca z webservice'm to klasyczny przykład operacji typu pytanie - odpowiedź i funkcjonalnie przypomina żądanie skierowane do webserwera, który po jego przetworzeniu (np. skrypt PHP lub ASP), zwraca odpowiedź. Do opisu interfejsu wymiany danych z usługami sieciowymi służy język WSDL (bazujący na XML), jednak na razie nie będziemy zgłębiać jego tajników, a zainteresowanych zapraszam do odnośników na końcu artykułu.
Do dzieła
Piszę wyżej o realizacji przez web service określonej funkcjonalności. Co może być taką funkcjonalnością? Cokolwiek. Usługi realizować mogą dowolny problem, mogą np. przeliczać temperaturę w skali Celsjusza na temperaturę w skali Fahrenheita. I właśnie konwersję temperatury oferuje publicznie dostępny web service, z którego korzystać będziemy w naszych przykładach.
Przykładowy web service oferujący konwersję temperatury znajduje się pod adresem http://www.w3schools.com/webservices/tempconvert.asmx. Po wpisaniu tego adresu w przeglądarkę powinna pojawić się strona usługi z widoczną nazwą TempConvert, informująca o udostępnianiu przez web service dwóch metod o nazwie: CelsiusToFahrenheit oraz FahrenheitToCelsius.
Dostępne są dwie metody, jednak w dalszej zabawie używac będziemy tylko pierwszej z nich. Nazwa metody CelsiusToFahrenheit jest jednocześnie linkiem do podstrony serwisu, po kliknięciu którego zobaczymy formularz, dzięki któremu mozna metodę przetestować oraz opis właściwej składni pytania i odpowiedzi.
W tym miejscu szczególnie warty uwagi jest opis składni. Pokazuje on, jak powinien wyglądać prawidłowy dokument XML, stanowiący żadanie dla usługi (jak widać komunikaty usługi zbudowane są w oparciu o protokół SOAP). A poniżej składnia dokumentu XML odpowiedzi usługi. To co szczególnie ważne, na co trzeba zwracać uwagę oglądając opis składni to typy danych, jakie wymagane są w żądaniu oraz jakie zostaną zwrócone w odpowiedzi (będzie to ważne dla języków, które ścisle pilnują typów, np. C++ lub C#).
Na górze strony znaleźć można prosty formularz www testujący metodę web service'a. Po wpisaniu właściwej wartości i kliknięciu klawisza Invoke, wyświetlony zostanie wynik (wpisana wartość temperatury w skali Celsjusza przeliczona zostanie na właściwa wartość w skali Fahrenheita), będący dokumentem XML zgodnym oczywiście z opisem składni odpowiedzi.
Jako że istotą komunikacji z web servicem, jest dokument XML (opakowany SOAP'em) przesyłany na serwer metodą POST, strona testowa metody podaje również prawidłowe nagłówki HTTP, które powinny zostać użyte podczas wysyłania tego żądania:
POST /webservices/tempconvert.asmx HTTP/1.1
Host: www.w3schools.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/CelsiusToFahrenheit"
Na tej samej stronie można także zobaczyć, że wysłanie POST'em na serwer XML'a nie jest jedyną metodą komunikacji z usługą sieciową. Mozliwe jest także użycie metody HTTP POST (np. poprzez zwykły formularz www). Ważne, by odbyło się to zgodnie z podaną składnią. W naszym przypadku jest ona następująca:POST /webservices
/tempconvert.asmx/CelsiusToFahrenheit HTTP/1.1
Host: www.w3schools.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Celsius=string
W przypadku prawidłowego żadania wysłanego metodą HTTP POST, serwer zwróci odpowiedź:HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">string</string>
Na razie tyle. W następnych artykułach spróbujemy napisać prosty skrypt JS oraz aplikacje (w środowiskach Borland C++ Builder oraz .NET C#), korzystające z powyższej usługi sieciowej konwertującej temperatury pomiędzy skalami Celsjusza i Fahrenheita.
Przydatne odnośniki
- Podstawy Web Services na Mozilla Developer Center
- Web Services Tutorial na w3schools.com
- Opis działania Web Services
- Kurs SOAP na stelmach.info
- Opis WSDL











W każdej prezentowany wynik może wyglądać trochę inaczej.