• Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Artykuły Web Service Web Service

Web Service

Email Drukuj PDF
Ocena użytkowników: / 2
SłabyŚwietny 

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.

web service TempConvertPrzykł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.

Metoda usługi Typy danych Wynik metody

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

Poprawiony: poniedziałek, 01 czerwca 2009 10:54  
Komentarze (1)
1 piątek, 17 kwietnia 2009 23:16
To czy po kliknięciu klawisza Invoke przeglądarka pokaże ładnie cały dokument XML z wynikiem, czy też pokaże tylko jego zawartość tekstową (a czasem nic nie pokaże) zależy oczywiście od używanej przeglądarki.
W każdej prezentowany wynik może wyglądać trochę inaczej.

Dodaj swój komentarz

Imię:
Adres e-mail:
Strona WWW:
Treść (możesz używać HTML):
Więcej artykułów na ten temat :
JoomlaWatch Stats 1.2.9 by Matej Koval

Użytkownicy

Naszą witrynę przegląda teraz 4 gości