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

Usunięta treść Dodana treść
Beau (dyskusja | edycje)
sprzątanie kodu
Nie podano opisu zmian
 
Linia 52:
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>:
 
<sourcesyntaxhighlight lang="xml"><ns1:getTemp #(1)
xmlns:ns1="urn:xmethods-Temperature" #(2)
SOAP-ENC:root="1">
<v1 xsi:type="xsd:string">27502</v1> #(3)
</ns1:getTemp></sourcesyntaxhighlight>
 
# 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.
Linia 63:
 
Zwracany dokument XML jest równie prosty do zrozumienia, jeśli tylko wiesz co należy zignorować. Skup się na tym fragmencie wewnątrz elementu <nowiki><Body></nowiki>:
<sourcesyntaxhighlight lang="xml">
<ns1:getTempResponse #(1)
xmlns:ns1="urn:xmethods-Temperature" #(2)
Linia 69:
<return xsi:type="xsd:float">80.0</return> #(3)
</ns1:getTempResponse>
</syntaxhighlight>
</source>
# Serwer zawarł wartość zwracaną przez funkcję w elemencie <tt><getTempResponse></tt>. Zgodnie z konwencją ten element jest nazwą funkcji plus słowo Response. Ale tak naprawdę to może być prawie cokolwiek; ważną rzeczą jaką SOAPProxy rozpatruje nie jest nazwa elementu, ale przestrzeń nazw.
# Serwer zwraca odpowiedź w tej samej przestrzeni nazw, której użyliśmy w żądaniu, tej samej przestrzeni nazw, którą podaliśmy, gdy po raz pierwszy tworzyliśmy obiekt klasy <tt>SOAPProxy</tt>. Dalej w tym rozdziale zobaczymy co się stanie, jeśli zapomnimy podać przestrzeń nazw podczas tworzenia obiektu <tt>SOAPProxy</tt>.