Nächste Seite: Komplexe Datentypen
Aufwärts: Einfache Datentypen: Ein rpc/literal
Vorherige Seite: Die Service Implementation einfügen
Inhalt
Um den Client zu implementieren, legen wir ein neues Python File an, in diesem Beispiel MyMathServiceClient.py:
language=Python, frame=shadowbox, tabsize=2, numbers=left, numberstyle=, numbersep=5pt
Man erkennt schnell, dass der Client recht simpel ist. Die relevanten Codezeilen sollen nun erläutert werden:
- Zeile 1: Die von wsdl2py erstellten Bindings werden importiert.
- Zeile 14: Eine Instanz der Locator Klasse wird erzeugt. Die Locator Klasse ist in MatheService_services.py definiert. Der Locator repräsentiert die Bindings zu dem angegebenen Web- Service und die Port Klasse, die verwendet wird, um die Remote- Operationen des Web- Services einzubinden. Weiterhin werden hier verschiedene Message Klassen definiert, die die SOAP und XML-Schema Datentypen abbilden. Der Name dieser Klasse hängt natürlich vom Namen des in der WSDL definierten Services ab. Das heißt, dass wenn eine andere WSDL verwendet wird, sich auch der Name ändert. Die Klasse findet man in der von wsdl2py generierten _services.py Datei recht einfach (Es ist die erste Klasse, die ihr in der Datei findet und endet immer auf ServiceLocator).
- Zeile 15: Der Variablen proxy wird der Port der Locator- Klasse zugewiesen. Über diesen Port werden später die Operationen des Web- Services angesprochen. Der übergebene Parameter tracefile = sys.stdout gibt zum Debugging die SOAP Nachrichten auf der Standardausgabe aus.
- Zeile 22: Wie auch beim Server benötigen wir die Instanz der Klasse, die den Datentyp aus der SOAP Message repräsentiert.
- Zeile 23: Analog zum Server füllen wir unsere Anfrage mit einem Wert. Hinweis: In Eclipse werden die möglichen Variablen, die in der Anfrage gesetzt werden können, durch die Codevervollständigung (Strg+ Space) angezeigt.
- Zeile 24: Hier wird nun die Operation getSquare aufgerufen und das Ergebnis der Variable response zugewiesen.
Das folgende Listing zeigt die Konsolenausgabe unseres Clients:
language=XML, frame=shadowbox, tabsize=2, numbers=none
Herzlichen Glückwunsch, unser Client funktioniert auch!
Nächste Seite: Komplexe Datentypen
Aufwärts: Einfache Datentypen: Ein rpc/literal
Vorherige Seite: Die Service Implementation einfügen
Inhalt
Richard Mutschler
2007-03-20