Die Validierung einer eingehenden SOAP-request, um die WSDL-Datei in PHP
Den integrierten PHP
Erweiterung für SOAP
nicht bestätigen alles in der eingehenden SOAP
Antrag gegen die XML Schema
im WSDL
. Es überprüft die Existenz von grundlegenden Einheiten, aber wenn man etwas kompliziertes wie simpleType
Einschränkungen die Erweiterung so ziemlich ignoriert Ihre Existenz.
Was ist der beste Weg, um zu validieren, die SOAP
Anfrage gegen XML Schema
enthalten in der WSDL
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durchgewühlt in dieser Angelegenheit ein paar Stunden.
Weder die native PHP SoapServer nore die NuSOAP Bibliothek wird jegliche Prüfung.
PHP SoapServer macht einfach einen type cast.
Zum Beispiel, wenn Sie definieren
Einreichen und
erhalten Sie die php-Typ boolean (true)
NuSOAP CASTET einfach alles zu string, obwohl es erkennt einfache Typen:
aus der nuSOAP-debug-log:
Also der beste Weg ist joelhardi Lösung zu überprüfen, sich selbst oder einige xml-Parser wie XERCES
Neben den native PHP5 SOAP-libs, ich kann Euch auch sagen, dass weder BIRNE, noch Zend SOAP-libs-tun-schema-Validierung der Meldungen zu präsentieren. (Ich weiß nicht, PHP SOAP-Implementierung, die funktioniert, leider.)
Was ich tun würde, ist das laden der XML-Meldung in eine DOMDocument DOMDocument-Objekt und die Methoden zur Validierung gegen das schema.
In der Regel nicht validieren gegen die WSDL. Wenn die WSDL ist richtig entwickelt, sollte es eine zugrunde liegende xml-schema (XSD) zur Validierung der body der Anfrage vor. Ihre XML-parser soll in der Lage sein, dies zu tun.
Der rest ist bis zu, wie Sie bei der Implementierung der web service und die SOAP-engine, die Sie verwenden. Ich bin nicht direkt vertraut mit der PHP-engine. Für WSDL - /interface-Ebene "Validierung" normalerweise mache ich so etwas wie dieses:
Ich war nicht in der Lage zu finden, eine einfache Möglichkeit zur Durchführung der Prüfung und am Ende war die Validierung code in die Geschäftslogik.
Vor einiger Zeit habe ich erstellen ein proof-of-concept web-service mit PHP unter Verwendung NuSOAP. Ich weiß nicht, ob es bestätigt die Eingabe, aber ich würde annehmen, dass es tut.