SOAP-Exceptions

Arndtinho

Erfahrenes Mitglied
Hallo,

ich erstelle gerade einen SOAP-Webservice (mit complex types). Das funktioniert auch soweit ganz gut. In der WSDL sind einige Felder als
Code:
minOccurs="0" maxOccurs="1"
definiert, weil es sich um Pflichtfelder handelt.
Damit der Webservice eine Anfrage mit einen fehlenden Pflichtfeld gar nicht erst abarbeitet, würde ich gern eine SOAP-Exception werfen. Hat jemand einen Tipp, wie dies am besten gehandelt werden kann?
Hier der entsprechende Auszug aus der WSDL:
Code:
<xsd:complexType name="Exception">
   <xsd:sequence>
      <xsd:element name="message" type="xsd:string" minOccurs="0"/>
   </xsd:sequence>
</xsd:complexType>
...
<wsdl:binding name="webservicesSOAP" type="tns:webservices">
   <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="company_update">
         <soap:operation soapAction="http://..../company_update"/>
            <wsdl:input>
               <soap:body use="literal"/>
      	    </wsdl:input>
      	    <wsdl:output>
      	       <soap:body use="literal"/>
      	    </wsdl:output>
      	    <wsdl:fault name="Exception">
      		<soap:fault name="Exception" use="literal"/>		
      	    </wsdl:fault>	
    	</wsdl:operation>
</wsdl:binding>

Viele Grüße
Arndtinho
 
Hi!

Erkennt PHP-SOAP Verletzungen der WSDL nicht automatisch? Wenn nicht, bleibt wohl nicht viel mehr als die Überprüfung selbst vorzunehmen und eine SOAP-Exception zurückzugeben. Wie auch immer, wo ist das Problem? http://de3.php.net/manual/de/soapfault.construct.php

Gruß
Enum


Nachtrag:
Selbst wenn PHP die Verletzungen automatisch erkennen sollte, würde ich dennoch nicht darauf vertrauen und vor allem bei (sicherheits-)kritischen Operationen in jedem Fall selbst die Überprüfung der Parameter vornehmen... - aber das nur so nebenbei. ;)
 
Zuletzt bearbeitet:
Allgemein finde ich den satz
felder minOccurs="0" maxOccurs="1"
definiert, weil es sich um Pflichtfelder handelt.

Sehr abstrus... Du sagst ein Element kann vorkommen oder auch nicht, da es sich um ein Pflichtfeld handelt? o.O

Die Execption muss so auch garnicht im wsdl stehen, das kann soap auch so, auser du deffinierst eingene Errors. Aber generell kannste mit den vorgegeben eigentlich auch gut arbeiten.
 
Hallo,

sorry für die verspätete Rückmeldung.
Stimmt, hatte da was missverstanden. Abder Auch wenn ich minOccurs="1" und maxOccurs="1" setze, aber an den WS keinen Wert liefere, bekomme ich keine Exception. Das heißt im Umkehrschluß, dass ich die Auswertung (Validierung) manuell vornehmen muss.

Viele Grüße
Arndtinho
 
Zurück