![]() ![]() |
Sie sind hier: TeilnehmerInnen > Volkers Bereich > Artikel > SOAP - Erste Schritte SOAP - Erste SchritteMit Zope einen SOAP-Server ansprechen Scope dieses Artikels ist nur die elementare Verwendung von SOAPpy Zun�chst ben�tigt man SOAPpy. In einem Debian-System braucht es dazu nur eines: Damit sp�ter keine Encoding-Probleme auftreten, kann man in diesem Zusammenhang auch gleich eine #sitecustomize.py #----------------------------------------------------------------------------- import sys sys.setdefaultencoding('iso-8859-1') Als n�chstes braucht man einen SOAP-Provider (Server). provider.py #----------------------------------------------------------------------------- from SOAPpy import Server class math: def __init__(self): self.result = 0 def worker_reset(self,args): self.result = 0 def worker_multiply(self,args): temp = 1 for x in args: temp = x*temp self.result = temp + self.result def worker_add(self,args): temp = 0 for x in args: temp = x+temp self.result = temp + self.result class strng: def __init__(self): self.result = "" def worker_reset(self,args): self.result = "" def worker_reflect(self,args): for x in args: self.result = self.result + x m = math() s = strng() def dispatch(obj="",func="",args=()): klasses = {'math':m, 'string':s} klass = klasses[obj] function = getattr(klass,"worker_%s" % func) function(args) return klass.result server = Server.SOAPServer(('localhost',8031)) server.registerFunction(dispatch) server.serve_forever() Der Server bietet eine Klasse mit Methoden zum Addieren und Multiplizieren und eine Klasse, die Strings zusammenzuf�gt und reflektiert. Interessant ist eigentlich nur die Funktion Dieser Server soll zum Testen dienen, also l�sst man ihn neben dem Zope laufen: Jetzt ist nur noch ein Script als Client f�r den SOAP-Provider erforderlich: client.py #----------------------------------------------------------------------------- # -*- coding: iso-8859-1 -*- from SOAPpy import Client server = Client.SOAPProxy("http://localhost:8031",encoding="iso-8859-1") def soap(klass="",func="",args=()): return server.dispatch(klass,func,args) Die zweite Zeile ist ab Python2.3 interessant, damit wird das Encoding gesetzt (Siehe PEP 0263). Ansonsten ist der Client unspektakul�r. Er stellt eine Funktion soap() zur Verf�gung, die ihrerseits nur die Parameter an den Server weitergibt und das Ergebnis des Servers zur�ckgibt. Das Script wird einfach in Im Zope wird Externe Methode client.py Id soap Title Soap Module Name client Function Name soap Python-Script test_py ## Script (Python) "test_py" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= ## context.soap('math','reset',()) return context.soap('math','multiply',(2,2)) Geschrieben von vbachs . Letzte �nderung 29.12.2003 13:00. |