Frage

Ich bin daran interessiert, ein Python-Client für einen Web-Service in Schreiben und zu Testzwecken wäre es sehr interessant sein, auch einen einfachen Stub-Server. Ich verwende Python 2.3 und ZSI 2.0.

Mein Problem ist, dass ich es nicht schaffen, eine Ausnahme vom Server zurück.

Wenn ich eine Ausnahme von dem für die Seife Fehler in der WSDL-Datei verwendeten Typs erhöhen, erhalte ich die Typeerror ‚Ausnahmen müssen Klassen, Instanzen oder Strings (veraltet), nicht EmptyStringException_Def‘. Ich dachte, dies bedeutete, dass der Fehler Objekt nicht um eine Unterklasse von Exception war, aber der generierten Code auf diese Weise modifiziert hat nicht geholfen - und natürlich nicht wäre, den generierten Code ändern zu müssen viel besser:)

Wenn ich den Fehler Objekt als Teil der Antwort zurück, wird es einfach ignoriert.

Ich konnte keine Dokumentation über Umgang mit Fehlern in ZSI finden. Irgendwelche Hinweise?

Hier ist ein Beispielcode für einen Server von einem sehr einfachen Service mit nur einem Verfahren, spellBackwards, die eine Seife Fehler zurückgeben soll, wenn die Eingabezeichenfolge leer ist:

#!/usr/bin/env python
from ZSI.ServiceContainer import AsServer
from SpellBackwardsService_services_server import *
from SpellBackwardsService_services_types import *
class SpellBackwardsServiceImpl(SpellBackwardsService):
    def soap_spellBackwards(self, ps):
        response = SpellBackwardsService.soap_spellBackwards(self, ps)
        input = self.request._in
        if len(input) != 0:
            response._out = input[::-1]
        else:
            e = ns0.EmptyStringException_Def("fault")
            e._reason = "Empty input string"

            # The following just produces an empty return message:
            # response._fault = e

            # The following causes TypeError
            # raise e

        return response

AsServer(port=8666, services=[SpellBackwardsServiceImpl(),])
War es hilfreich?

Lösung

Ich habe die Antwort in diesem ZSI Kochbuch , von Chris Hoobs, verknüpfen gefunden bei der Boden der ZSI Startseite :

  

5.4 Ausnahmen
  Eine heikle Frage ist, wie die Fehler auf dem Server zu erzeugen. Mit dem ZSI v2.0 Code als   vorgesehen ist, ist dies nicht möglich.

Ich nehme an, dies richtig zu sein, da das Papier von der Projekt-Homepage verknüpft ist.
Dieses Papier schlägt auch eine Abhilfe, die in dem Patchen die Fault.py Datei in der ZSI Verteilung besteht.
Getestet habe ich die Abhilfe und es funktioniert wie versprochen; die Bibliothek Patchen ist als akzeptable Lösung für mich, da ich nur einen Server für Testzwecke erzeugen muß (das heißt ich werde nicht die gepatchte Bibliothek verteilen muß).

Andere Tipps

Entschuldigungen für nicht in der Lage zu sein, die Frage zu beantworten.

Ich kämpfte mit ZSI für eine Weile.

Ich bin jetzt SUDS mit: https://fedorahosted.org/suds/wiki , und alles hat sich viel einfacher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top