Pregunta

El built-in PHP extensión para SOAP no validar todo en los entrantes SOAP petición en contra de la XML Schema en el WSDL.Se comprueba la existencia de entidades básicas, pero cuando tienes algo complicado como simpleType las restricciones de la extensión bastante ignora su existencia.

¿Cuál es la mejor manera de validar la SOAP petición contra XML Schema contenida en el WSDL?

¿Fue útil?

Solución

Estado cavando alrededor de este asunto, ver horas.Ni los nativos de PHP SoapServer nore la Librería NuSOAP ninguna Validación.PHP SoapServer simplemente hace una conversión de tipo.Por Ejemplo, si se define

<xsd:element name="SomeParameter" type="xsd:boolean" />

y presentar

<get:SomeParameter>dfgdfg</get:SomeParameter>

usted obtendrá el php de Tipo boolean (true)

NuSOAP simplemente arroja todo a la cadena aunque reconoce los tipos simples:

desde el nuSOAP de registro de depuración:

nusoap_xmlschema: processing typed element SomeParameter of type http://www.w3.org/2001/XMLSchema:boolean

Así que la mejor manera es joelhardi solución para validar usted mismo o utilizar algunos Analizador xml como XERCES

Otros consejos

Además de la nativa PHP5 SOAP libs, yo también puedo decir que ni la PERA ni Zend JABÓN libs hará la validación de esquema de mensajes en la actualidad.(No sé de PHP SOAP aplicación que hace, por desgracia.)

Lo que me gustaría hacer es cargar el mensaje XML en un DOMDocument objeto y uso DOMDocument métodos para validar el esquema.

Normalmente uno no validar contra el WSDL.Si el WSDL es diseñado correctamente, debe ser la base de los esquemas xml (XSD) para validar el cuerpo de la solicitud.Su analizador de XML debe ser capaz de hacer esto.

El resto depende de cómo implementar el servicio web y que el JABÓN motor está utilizando.Yo no soy de conocer directamente con el motor de PHP.Para WSDL/nivel de interfaz de "validación" yo suelo hacer algo parecido a esto:

  1. ¿El cuerpo de la solicitud coincida con un conocido tipo de solicitud y es válida (por XSD)?
  2. ¿El mensaje de sentido en este contexto y puedo asignar a una operación/controlador?
  3. Si es así, iniciar el procesamiento se
  4. De otra manera:error

Yo no era capaz de encontrar alguna forma más sencilla para realizar la validación y en la final tuvo código de validación en la lógica de negocio.

Hace algún tiempo he de crear una prueba de concepto servicio web con PHP usando NuSOAP.No sé si es valida la entrada, pero supongo que sí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top