 
Web Service
Marcin Piątek 164797
11. Web Service i ESB
 
Plan prezentacji
• Co to jest Web Service ?
• Korzyści, możliwości, zastosowania
• Rozwiązania i technologie
– XML-RPC
– SOAP
– WSDL
– UDDI
• Przykład Web Service – płatności.pl
• Podsumowanie , bibliografia
2 / 29
 
Web Service - definicja własna
Web Service to zdalna usługa sieciowa, 
która oferuje jej użytkownikom/klientom 
pewne funkcjonalności i korzyści po 
komunikacji z tą usługą za pomocą dobrze 
opisanych interfejsów i z użyciem 
odpowiednich protokołów komunikacji. 
3 / 29
 
Web Service – definicja wg W3C
• Web Service to oprogramowanie stworzone w celu
wspierania sieciowej współpracy między 
systemami/maszynami. Posiada interfejs opisany 
formatem "maszynowym" (np. WSDL). Inne systemy 
współpracują z Web Service w sposób opisany w 
jego dokumentacji, z wykorzystaniem wiadomości 
SOAP, najczęściej transportowanym przez protokół 
HTTP z serializacją XML, w połączeniu z innymi 
sieciowymi standardami. 
Tłumaczenie własne definicji za w3.org
4 / 29
 
Dlaczego tego używać ?
• Oszczędność
• Skalowalność
• Zaawansowane i sprawdzone rozwiązania
• Możliwość zarobku ( z perspektywy 
dostarczającego usługi )
5 / 29
 
Przykłady zastosowań
• Serwis pogodowy
• Internetowy katalog produktów
• RSS
• Mapy
• Płatności online
• … wiele innych
6 / 29
 
Web Service – stos protokołów
7 / 29
 
Wzorce wymiany informacji
• Jednokierunkowa
- klient dostawca
→
(np. założenie nowej płatności )
- dostawca   klient 
→
(np. informacja o zmianie stanu 
płatności )
• Dwukierunkowa
- k d k
→ →
(np. żądanie anulowania 
transakcji   w odpowiedzi 
→
status )
- d   k   d 
→ →
(np. informacja o zmianie stanu 
płatności z potwierdzeniem 
odbioru)
8 / 29
 
XML-RPC
• Protokół XML pierwszej generacji
• Oparty na RPC (Remote Procedure Call)
• Bardzo prosty (specyfikacja: 4 strony) :
żądania HTTP POST z odpowiednią strukturą treści:
– Nagłówek HTTP ( i XML)
– Rama: <methodCall> 
– Metoda: <methodName>
– Parametry: <params>
• Typy danych: 6 podstawowych + tablice i rekordy
9 / 29
 
XML-RPC - przykład
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
  <methodName>weather.getWeather</methodName>
    <params>
      <param><value>10016</value></param>
    </params>
</methodCall>
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodResponse> 
  <params> 
    <param>
      <value><int>65</int></value>
    </param>
  </params>
</methodResponse>
Klient WS
Dostawca WS
10 / 29
 
SOAP
• Simple Object Access Protocol
• Protokół XML drugiej generacji
• Większa złożoność   większe możliwości
↔
• Niezależny od protokołu przenoszenia danych
• Bardzo elastyczny – określone tylko ramy, nie 
szczegóły – możliwość wyboru czy wręcz użycia 
własnej formy przekazywanej zawartości 
wiadomości
11 / 29
 
SOAP – struktura wiadomości
Wymagane:
– Envelope – opakowanie
całości
– Body – zawartość
wiadomości
Opcjonalne:
– Header – metadane itp. 
– Fault – nie zawsze 
obsługiwany
12 / 29
 
SOAP – przykład wiadomości
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="
http://www.w3.org/2001/XMLSchema
">
  <SOAP-ENV:Header>
    <ns1:PaymentAccount xmlns:ns1="urn:ecerami" >
      orsenigo473
    </ns1:PaymentAccount >
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:getTemp xmlns:ns1="urn:xmethods-Temperature"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <zipcode xsi:type="xsd:string">10016</zipcode>
    </ns1:getTemp>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
13 / 29
 
SOAP – kodowanie wiadomości
• SOAP nie narzuca żadnego standardu, można
wybrać dowolne kodowanie treści
• ...ale oferuje też własny standard kodowania
(najczęściej używany)
• … który posiada:
– Własną składnię
– Typy proste ( 21 )
– Typy złożone : tablice i rekordy
14 / 29
 
SOAP – 2 przykłady kodowania
<SOAP-ENV:Body>
  <ns1:getTemperatureRequest 
  xmlns:ns1="urn:weatherservice"
  SOAP-ENV:encodingStyle=
   "http://www.w3.org/2001/09/soap-
encoding">
    <zipcode xsi:type="xsd:integer">
      54990
    </zipcode>
    <date xsi:type=”xsd:date”>
      2011-05-09
    </date>
  </ns1:getTemperatureRequest>
</SOAP-ENV:Body>
<SOAP-ENV:Body>
  <ns1:getTemperature
    xmlns:ns1="urn:XMLweatherservice"
    SOAP-ENV:encodingStyle=
    "http://xml.apache.org/xml-soap/literalxml">
    <request>
      <zip>54990</zip>
      <date>20110509</date>
    </request>
  </ns1:getTemperatureRequest>
</SOAP-ENV:Body>
SOAP Encoding
Literal XML Encoding
15 / 29
 
SOAP – jak korzystać ?
• Ręczne tworzenie wiadomości – raczej nie
dla ludzi (tym bardziej nie dla [leniwych] 
informatyków )
• Korzystamy z gotowych implementacji –
dostępne dla wszystkich popularnych 
języków   użycie dobrze opisanego WS (z 
→
użyciem WSDL) praktycznie identyczne z 
lokalnym użyciem metod/funkcji
16 / 29
 
WSDL - wstęp
• Web Service Description Language
• Opis słowny usług świadczonych przez WS 
nie jest wystarczający
• Wygodne jest korzystanie z ujednoliconego
opisu rozumianego przez maszyny
• WSDL jest rodzajem kontraktu między
świadczącym usługę a korzystającymi z 
niej
17 / 29
 
WSDL cd.
• Niezależny od platformy i języka opisywanych usług
• Definiowany w XML
• Określa:
– CO dany WS robi (np. jakie operacje udostępnia)
– GDZIE WS można znaleźć (np. adresy URL )
– JAK danego WS'a używać (np. format wiadomości )
18 / 29
 
WSDL - zawartość
W WSDL dany Web Service jest opisywany przez 6 głównych elementów:
• TYP (<wsdl:types> ), definicje typów danych używanych do komunikacji
przez dany WS
• WIADOMOŚĆ (<wsdl:message>), abstrakcyjna definicja danych
przesyłanych/odbieranych w operacjach (przykład: wiadomość 
zapytanieTemperatura zawiera pola : integer ZIPCODE , date DATA )
• TYP PORTU (<wsdl:portType> ), zbiór abstrakcyjnych operacji, dla każdej
określone wiadomości wejściowe i wyjściowe oraz ewentualnie wiadomość z 
błędem.
• WIĄZANIE (<wsdl:binding>) , specyfikuje konkretny protokół i format danych
dla operacji i wiadomości zdefiniowanych dla danego typu portu
• PORT (<wsdl:port>) , przypisanie konkretnego adresu URL
• SERWIS (<wsdl:service>) , zbiór wszystkich portów danego WS
19 / 29
 
WSDL: zawartość schemat
→
20 / 29
 
UDDI - wstęp
• Universal Description Discovery and
Integration
• Geneza: jak znaleźć usługę której
potrzebujemy ?
• UDDI umożliwia :
– opisywanie
– odkrywanie
– integrację
...usług sieciowych
21 / 29
 
UDDI cd.
• UDDI nie jest związany z żadną konkretną technologią
usług, opisuje nie tylko WS używające SOAP czy nawet 
komputerów– teoretycznie może opisywać nawet usługi 
świadczone przez Fax, choć …
• Opisywany zawsze za pomocą XML
22 / 29
 
UDDI – scenariusz użycia
23 / 29
 
UDDI – struktura dokumentu
24 / 29
 
Przykład użycia WS- płatności.pl
• Opis : dokumentacja techniczna oraz WSDL
• Możliwe sposoby komunikacji
– Czyste żądania HTTP – POST, GET – w
odpowiedzi XML lub czysty tekst
żądanie może wyglądać np. tak:
https://adres/NewPayment?arg1=val1&arg2=val2&...
– SOAP ( opisane przez WSDL )
25 / 29
 
Przykład cd.
• Z dokumentacji technicznej znamy adres WSDL 
• Chcemy wywołać metodę getRefunds , która za parametr 
przyjmuje obiekt z 4 atrybutami : posID, sessionId, ts, sig
• Do dzieła ! W php to będzie tak:
• W odpowiedzi otrzymujemy obiekt z atrybutami określonymi
w dokumentacji (oraz w dokumencie WSDL)
• To wszystko, właśnie użyliśmy SOAP !
$wsdl_url = 'https://www.platnosci.pl/paygw/webapi/Refunds?wsdl' ;
$client = new SoapClient($wsdl_url) ;
$argumenty = (object) array('posId'=>'1234' , 'sessionId'=>'1102', 'ts'=> '1915', 'sig'=>'ASD21D') ;
$odpowiedz = $client->getRefunds($argumenty);
26 / 29
 
Podsumowanie
• Użycie Web Service daje bardzo duże możliwości rozwoju i integracji oprogramowania
• Dostępne są różne metody użycia Web Service, od prostych (XML-RPC) po złożone 
(SOAP)
• Istnieją języki/standardy pozwalające w pełni korzystać z dobrodziejstw usług
sieciowych, od ich odkrywania, przez poznawanie i opisywanie, aż do bezpośredniego 
ich użycia z pomocą konkretnych protokołów komunikacji i transportu
• Poznanie języków formalnych (SOAP, UDDI, WSDL) wymaga czasu, ale nie jest
konieczne, jeżeli chcemy tylko używać pewnych usług, a nie tworzyć własne.
27 / 29
 
Bibliografia
• M. Papazoglou, „Web Services: principles
and technology”, 2008
• E. Cerami, „Web Service Essentials”, 2002
• Oficjalna strona World Wide Web 
Consortium,
• Specyfikacja XML-RPC ,
• Dokumentacja techniczna płatności.pl
• Wikipedia
 
Pytania
? ?