Zanurkuj w Pythonie/Pierwsze kroki z SOAP

Z Wikibooks, biblioteki wolnych podręczników.

Pierwsze kroki z SOAP[edytuj]

Sercem SOAP jest zdolność wywoływania zdalnych funkcji. Jest wiele publicznie dostępnych serwerów SOAP, które udostępniają proste funkcje do celów demonstracyjnych.

Najbardziej popularnym publicznie dostępnym serwerem SOAP jest http://www.xmethods.net/. Poniższy przykład wykorzystuje funkcję demostracyjną, która pobiera kod pocztowy w USA i zwraca aktualną temperaturę w tym regionie.

Przykład 12.6. Pobranie aktualnej temperatury

>>> from SOAPpy import SOAPProxy            #(1)
>>> url = 'http://services.xmethods.net:80/soap/servlet/rpcrouter'
>>> namespace = 'urn:xmethods-Temperature'  #(2)
>>> server = SOAPProxy(url, namespace)      #(3)
>>> server.getTemp('27502')                 #(4)
80.0
  1. Dostęp do zdalnego serwera SOAP możemy uzyskać poprzez klasę proxy SOAPProxy. Proxy wykonuje całą wewnętrzną robotę związaną z SOAP, włącznie z utworzeniem dokumentu XML żądania z nazwy funkcji i listy jej argumentów, wysłaniem żądania za pośrednictwem HTTP do zdalnego serwera SOAP, sparsowaniem dokumentu XML odpowiedzi i utworzeniem wbudowanych wartości Pythona, które zwraca. Zobaczymy jak wyglądają te dokumenty XML w następnej sekcji.
  2. Każda usługa SOAP posiada URL, który obsługuje wszystkie żądania. Ten sam URL jest używany do wywoływania wszystkich funkcji. Ta konkretna usługa ma tylko jedną funkcję, ale później w tym rozdziale zobaczymy przykłady API Google'a, które ma kilka funkcji. URL usługi jest współdzielony przez wszystkie funkcje. Każda usługa SOAP ma także przestrzeń nazw, która jest definiowana przez serwer i jest zupełnie dowolna. Jest ona po prostu częścią konfiguracji wymaganą do wywoływania metod SOAP. Pozwala ona serwerowi na wykorzystywanie jednego URL-a dla usługi i odpowiednie przekierowywanie żądań pomiędzy kilkoma niepowiązanymi ze sobą usługami. To jest podobne do podziału modułów Pythona na pakiety.
  3. Tworzymy instancję SOAPProxy podając URL usługi i przestrzeń nazw usługi. Ta operacja nie wykonuje jeszcze żadnego połączenia z serwerem SOAP; ona po prostu tworzy lokalny obiekt Pythona.
  4. Teraz, gdy wszystko jest odpowiednio skonfigurowane, możemy właściwie wywołać zdalne metody SOAP tak jakby to były lokalne funkcje. Przekazujemy argumenty tak jak do normalnych funkcji i pobieramy wartości zwrotne też tak jak od normalnych funcji. Ale pod spodem tak naprawdę dzieje się niezwykle dużo.

A więc zajrzyjmy pod spód.