Zanurkuj w Pythonie/Debugowanie serwisu sieciowego SOAP: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Linia 4:
Biblioteki SOAP dostarczają łatwego sposobu na zobaczenie co się tak naprawdę dzieje za kulisami.
 
Włączenie debugowania to jest po porstuprostu kwestia ustawienia dwóch flag w konfiguracji <tt>SOAPProxy</tt>.
 
'''Przykład 12.7. Debugowanie serwisów SOAP'''
Linia 50:
# Po pierwsze tworzymy normalnie <tt>SOAPProxy</tt> podając URL serwisu i przestrzeń nazw.
# Po drugie włączamy debugowanie poprzez ustawienie <tt>server.config.dumpSOAPIn</tt> i <tt>server.config.dumpSOAPOut</tt>.
# Po trzecie wywołujemy jak zwykle zdalną metodę SOAP. Biblioteka SOAP wyświetli zarówno wychodzący dokument XML ządaniażądania, jak i przychodzący dokument XML odpowiedzi. To jest cała ciężka praca jaką <tt>SOAPProxy</tt> wykonuje dla Ciebie. Przerażające, nie prawdaż? Rozbieżmy to na czynniki.
 
Większość dokumentu XML żądania, który jest wysyłany do serwera, to są elementy stałe. Zignoruj wszystkie te deklaracje przestrzeni nazw; one nie ulegają zmianie (lub są bardzo podobne) w trakcie wszystkich wywołań SOAP. Sercem "wywołania funkcji" jest ten fragment w elemencie <nowiki><Body></nowiki>:
Linia 61:
 
# Nazwą elementu jest nazwa funkcji: <tt>getTemp</tt>. <tt>SOAPProxy</tt> używa <tt>getattr</tt> jako dyspozytora. Zamiast wywoływania poszczególnych metod lokalnych bazując na nazwie metody, używa on nazwy metody do skonstruowania dokumentu XML żądania.
# Element XML-a dotyczący funkcji zawarty jest w konkretnej przestrzeni nazw, którąktóra to jest ta podana podczas tworzenia instancji klasy <tt>SOAPProxy</tt>. Nie przejmuj się tym <tt>SOAP-ENC:root</tt>; to też jest stały element.
# Argumenty funkcji także zostały przekształcone na XML-a. <tt>SOAPProxy</tt> używając introspekcji analizuje każdy argument, aby okreslić jego typ (w tym wypadku jest to string). Typ argumentu trafia do atrybutu <tt>xsi:type</tt>, a zaraz za nim podana jest jego wartość.